忘记目录或文件的位置,用find就能轻松找到
find
- 按名称搜索
find ./ -name "a" # 递归查找当前目录下名字为“a”的目录或文件(区分大小写)
find ./ -iname "a" # 递归查找当前目录下名字为“a”的目录或文件(不区分大小写)
find ./ -name "*a*" # 递归查找当前目录下名字包含字母“a”的目录或文件
- 按路径搜索
find ./ -path "*/src/*/a" # 递归查找src目录下名字为“a”的目录或文件(区分大小写)
find ./ -ipath "*/src/*/a" # 递归查找src目录下名字为“a”的目录或文件(不区分大小写)
- 按类型搜索
find ./ -type f # 递归查找当前目录下所有文件
find ./ -type d # 递归查找当前目录下所有目录
find ./ -type l # 递归查找当前目录下所有链接
- 搜索空目录和文件
find ./ -empty # 递归查找当前目录下所有空目录和文件
- 非搜索
find ./ -type f ! -name "*.txt" # 递归查找当前目录下所有不以“.txt”结尾的文件
find ./ -type f ! -empty # 递归查找当前目录下所有非空文件
- 根据日期时间搜索文件
- mtime(Modification time)最后一次文件内容有过更改的时间点
- atime (Access time)最后一次文件有被读取过的时间点
- ctime (Change time)最后一次文件有被变更过的时间点(如内容被修改,或权限等 metadata 被修改)
find ./ -mtime +1 # 搜索1天前修改的文件
find ./ -mtime -1 # 搜索1天内修改的文件
find ./ -mtime +50 -mtime -100 # 搜索50-100天范围内修改的文件
find ./ -mmin -1 # 搜索1分钟内修改的文件
- 根据文件大小搜索
- c:字节
- k:Kb
- M:Mb
- G:Gb
find ./ -size +1G # 搜索大于1G的文件
find ./ -size -500M # 搜索小于500M的文件
- 逻辑运算
- a:and 与运算
- o:or 或运算
- 小括号用单引号引起来
find ./ '(' -mmin -5 -o -mtime +50 ')' -a -type f
- 按文件权限搜索
find ./ -perm u=rwx,g=rx,o=rx
find ./ -type f -perm /a=x # / 符号表示只匹配权限的某个子集
find ./ -perm 644
- 指定递归层数
find ./ -maxdepth 2 # 搜索时向下递归的层数最大为 2
- 对搜索结果执行命令
find ./ -type d -empty -delete # 删除检索出的内容
find ./ -type f -name '*.mp3' -exec cp {} /media/MyDrive ';'
find ./ -type f -exec grep -l hello {} ';'
find ./ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} + # 若不使用 + ,压缩包只有1个文件,因find找到1个符合条件的文件就执行压缩,原压缩包文件就会被覆盖;使用 + ,find找出所有符合条件的文件后再压缩
find ./ -type file -size +1G -ls
网友评论