Linux下的常用查找命令
- locate
- whereis
- which
- find
locate -i, 忽略大小写
find 根据文件名或正则表达式搜索 -name 条件限制 -a 与条件 -o 或条件 -not 非条件(此参数的功能类似于否定参数‘!’)
find -name "t*" -a -name "*.text" //查找以t开头并且以.text结尾的文件find -name "t*" -o -name "*.text" //查找以t开头或以.text结尾的文件find -not -name "t*" -o -name "*.text" //查找不以t开头或以.text结尾的文件
- 1
- 2
- 3
- 1
- 2
- 3
设定find命令在子目录中遍历的深度参数: -maxdepth -mindepth 根据文件类型搜索:
类型 | 符号 |
---|---|
普通文件 | f |
符号文件 | l |
目录 | d |
字符设备 | c |
块设备 | b |
套接字 | s |
管道文件 | p |
find -type l //查找此目录及子目录以下的所有符号文件find -type f //普通文件
- 1
- 2
- 1
- 2
根据文件时间进行查找: linux文件系统中的每个文件都有三种时间戳: 1. 访问时间(atime——access time):就是上次访问这个文件的时间。 2. 改变时间(ctime——change time):就是文件的inode改变的时间(什么是inode?)当你往一个文件中添加数据或者删除数据的时候,修改文件所有者的时候,链接改变的时候,文件的ctime就会发生改变。 3. 修改时间(mtime——modification time):就是文件的内容上一次发生改变的时候的时间。
find -type f -atime -7 #查找7天内被访问的文件find -type f -atime 7 #查找恰好在7天前被访问的文件find -type f -atime +7 #查找超过7天没被访问的文件
- 1
- 2
- 3
- 1
- 2
- 3
-atime,-ctime,-mtime可作为find的时间参数,单位是天。还有基于“分钟”的,-amin,-mmin -cmin。这些值通常还带有+或-:+表示大于,-表示小于。 -newer参数,我们可以指定一个用于比较时间戳的参考文件,然后找出比参考文件更新的所有文件。
find -type f -newer test4 //查找当前目录及子目录下比test4更新的文件
- 1
- 1
基于文件大小的查找 -size参数
find -type f -size +45 //查找文件大小比45大的普通文件find -type f -size 45 //查找文件大小为45的普通文件find -type f -size -45 //查找文件大小比45小的普通文件
- 1
- 2
- 3
- 1
- 2
- 3
基于文件权限和文件所有人的查找 -perm -user
find -type f -perm 664 //查找权限为664的普通文件find -type f -user lee //查找所有人为lee的普通文件
- 1
- 2
- 1
- 2
结合find执行命令或动作 -exec
find -type f -name "*.c" -exec cat> file.txt \; #将所有.c文件拼接起来写入单个文件file.txt中find -type f -mtime +10 -name "*.text" -exec cp /5_15 #将10天前的.text文件复制到/tmp下
- 1
- 2
- 1
- 2
find与xargs结合使用 xargs参数 将标准输入转换成命令行参数
find -type f -name "*.txt" -print0 |xargs -0 rm -f #将匹配到的文件删除,xargs -0将 \0作为输入定界符。find -type f -name "*.c" -print0 | xargs -0 -l #统计所有c程序文件的行数