目录
locate命令(在后台数据库中按文件名全盘搜索,速度比find快得多,但是对于刚创建的文件还没有被收录到数据库,可能搜不到)
sort命令(将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出)
wc命令(统计文件中的字节数、字数、行数等并将结果输出到输出设备上)
find命令(搜索文件系统中的文件)
按照文件名搜索
- find / - name filename(从根目录开始搜索 ,遍历整个文件系统,查找名为filename的文件)
- find / -name “*.str”(从根目录开始搜索 ,遍历整个文件系统,查找后缀名为“.str”的文件,这里使用了正则表达式)
- find . -name “*.str”(在当前目录下搜索后缀名为“.str”的文件)
- find /dir -name “str*”(在dir目录下搜索文件开头名为“str”的文件)
- find /dir -name "[a-z]*”( 在dir目录下搜索a-z小写字母开头的文件,换成"[A-Z]*"是大写)
- find / -name filename -delete (从根目录开始,搜索名为 filename的文件,并删除找到的所有匹配文件)
- find /dir -iname "STR" ( 在dir目录下搜索STR字母开头的文件但是忽略STR大小写)
- 按照大小搜索
- find /root -size +50k(搜索文件大小大于50k的文件)
- find /root -size -50k(搜索文件大小小于50k的文件)
- find /root -size 50k (搜索文件大小等于于50k的文件)
- 其他单位, b(字节)、M(兆字节)、这里是k代表KB(千字节)。
- 按照文件类型搜索
- f:普通文件
- d:目录文件
- l:链接文件
- b:块设备文件
- c:字符设备文件
- p:管道文件
- s:套接字文件
- 按照时间进行搜索
- 修改时间(mtime[天]/mmin[分钟]/):最后一次文件内容有过更改的时间点
- 访问时间(atime[天]/amin[分钟]/):最后一次文件有被读取过的时间点
- 变更时间(ctime[天]/cmin[分钟]/):最后一次文件有被变更过的时间点,包括内容更改、权限更改等
- find /dir -type f -mtime 2(/dir目录中2天前被修改过的普通文件)
- find /dir -type f -mtime +50 -mtime -100(/dir下50到100天之前修改过的普通文件)
- find /dir -type f -mtime 2 -atime 1(2天前被修改过且1天前被访问过的普通文件)
- find /dir -type f -mmin 5 -amin 2(5分钟前被修改过且2分钟前被访问过的普通文件)
- find / -cmin -30(文件系统中30分钟内被变更过的文件)
- find / -newer file1 ! -newer file2(文件系统中更改时间比file1新,比file2旧的文件)
- 按照权限搜索
- find /dir -perm u=rwx,g=rx,o=r
在 /dir 目录下搜索那些权限设置为用户(u)读写执行、组(g)读执行、其他(o)只读的文件。简单来说,它查找那些权限设置为 764 的文件。 - find /dir -perm 644
在 /dir 目录下搜索那些权限设置为 644 的文件。这意味着用户(u)有读写权限,而组(g)和其他(o)只有读权限。 - find / -user "username"
在整个文件系统中搜索所有者为 "username" 的文件和目录。 - find / -uid "1001"
在整个文件系统中搜索用户ID为 "1001" 的文件和目录。这与上一个命令类似,但它是通过UID而不是用户名来查找的。 - find / -group "gname"
在整个文件系统中搜索属于 "gname" 组的文件和目录。 - find / -gid "1002"
在整个文件系统中搜索组ID为 "1002" 的文件和目录。这与上一个命令类似,但它是通过GID而不是组名来查找的。
- find /dir -perm u=rwx,g=rx,o=r
还有以下搜索方式(了解就行,不用掌握)
- 综合搜索
- 反向搜索
- 忽略某个文件或目录
- 限制目录的遍历层数
- 逻辑组合and、or
- 对搜索结果执行命令
- 删除:-delete
- 执行:-exec
- 显示:-ls
locate命令(在后台数据库中按文件名全盘搜索,速度比find快得多,但是对于刚创建的文件还没有被收录到数据库,可能搜不到)
需要注意的是,为了使 locate 命令能够找到最新的文件,你需要定期更新其数据库。这通常可以通过 cron 任务或其他调度工具自动完成,或者使用 updatedb 命令手动执行
- updatedb更新数据库(注意这个命令需要超级用户权限来执行)
- locate filename(会在 mlocate 的数据库中查找名为 filename 的文件,并输出所有匹配的结果)
- locate -n 10 filename(会在 mlocate 的数据库中查找名为 filename 的文件但限制了输出结果为最多10个匹配项)
whereis命令
- 查找指定命令的二进制文件、源文件和帮助文件。例如,使用命令whereis ls可以查找ls命令的相关信息。
- 在数据库中搜索二进制文件(-b)、man说明文件/帮助页面(-m)和源代码文件(-s)
- 只搜索帮助页面或源代码。例如,whereis -m cp只显示cp命令的帮助页面路径,whereis -s cp只显示cp命令的源代码路径。
sort命令(将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出)
- 默认
文件里可以有字符,也可以有数字,如果是纯数字则会默认按照字符顺序排列sort不改变源文件,只起到排序数据显示结果功能
- -u:去掉重复项
- -n:依照数值大小排序即按照整数类型比较排序
- -r:以反向顺序来排序(sort默认为升序排列)
- -b:忽略每行前面出现的空格
只有sort情况下,前面有空格的默认排到最前面,然后是大写字母排到小写字母前面 - -c:检查文件是否已经按照顺序排序
- -f:排序时,将小写字母视为大写字母
- -m:将几个排序好的文件进行合并
- -M:将前面三个字母按照月份缩写进行排序
- -t <分隔符>:以指定分隔符分割栏位
- -k:如果有多栏数据,-k用于指定要排序的栏位(列,默认栏位是空格分割的也可以使用-t来指定分隔符分割栏位)
- sort -k 3 score.txt(将score.txt文件的第三列进行排序,默认升序)
但是我们发现并没有按照第三列的分数进行升序排列。
默认情况下,sort会将所有字段视为字符串进行排序。这意味着它会按照字符的ASCII值进行排序,而不是按照数字值。因此排序结果不是按照第三列的数字值进行排序的原因。
- sort -k 3,3n score.txt(指定score.txt文件的第三列并按照数字值进行排序,默认升序)
- sort -k 2.2 score.txt(指定按照score.txt文件的第一个字段第一个字符进行排序)
- -o outfile:将排序后的结果写入指定文件
- -R:随机排序(仅GNU支持)
wc命令(统计文件中的字节数、字数、行数等并将结果输出到输出设备上)
- 默认(显示的分别是:行数、字数、字节数、文件名)
- -c:统计字节数
- -l:统计行数
- -m : 统计字符数
- -w:统计字数
- -L:统计最长行的长度
- 也可以和其他的命令组合使用
-
- 输出当前目录的文件数(ls -l 长格式输出文件信息,也就是每个文件占一行,然后利用管道符统计输出的行数)
cp命令(复制文件(目录)和创建链接)
- 默认
- -f:强制复制,若目标文件存在且无法开启,删除后再次尝试
- -i:覆盖前询问
- -p:复制文件并复制其所有属性
演示一下属性复制的变化
- 使用user0账户新建一个文件user0file,查看其属性ls -l user0file
- 使用root账户将刚才创建的user0file文件复制到另一个目录,并查看其属性
- 使用-p属性,则会连同属性一起复制
以上就是-p的作用
- -r:递归复制,用于目录复制
- -s:创建符号链接(软链接、快捷方式)
- -l:创建硬链接
- -d:若文件为链接文件,则复制链接文件属性而非文件本身