常用命令
-
直接使用
find path命令, 可以列出该path下的所有文件及文件夹, 相当于find path -print, 以换行符为分割, 如果使用-print0以"\0"作为分隔符 -
根据文件名搜索
find path -name "filename"其中
filename中可以使用正则表达式, 如:find /home -name "*.py", 如果是-iname搜索时会忽略大小写, 想要查找多个条件中的一个, 使用OR(-o)操作, 如:find /home \( -name "*.py" -o -name "*.rb" \), 注意 ( 的后面和 ) 的前面要有空格 -
根据路径进行搜索
find path -path "path"如:
find /home -path "*/test/*" -
根据正则表达式进行搜索
find path -regex "regex"如:
find /home -regex ".*\(\.py\|\.sh\)$", 如果是-iregex搜索时会忽略大小写 -
否定搜索, 使用
!操作find /home ! -name "*.py" -
指定搜索时的目录深度
find path -maxpath n或者find path -minpath n分别指定搜索时的最大和最小深度,
-maxpath和-minpath尽量放在其他搜索条件的前面, 可以提高搜索效率, 如:find /home -maxpath 3 -name "*.py" -
根据文件类型搜索
find path -type type如:
find /home -type f, 其中f 普通文件 l 符号链接 d 目录 c 字符设备 b 块设备 s 套接字 p FIFO -
根据时间搜索
-atime/-amin 最后一次访问的时间, 分别以天和分钟为单位 -mtime/-mmin 内容最后一次被修改的时间, 分别以天和分钟为单位 -ctime/-cmin 文件元数据(如权限\所有权等)最后一次改变的时间, 分别以天和分钟为单位 举例说明
find /home -atime 7恰好在7天前访问过 find /home -atime +7访问超过7天的 find /home -atime -77天之内访问的 find /home -type f -newer file.txt在 file.txt 修改后修改的文件 -
根据文件大小搜索
b 块( 512 字节) c 字节 w 字( 2 字节) k 1024 字节 M 1024k G 1024M 举例说明
find /home -size 200k等于 200k 的文件 find /home -size +200k大于 200k 的文件 find /home -size -200k小于 200k 的文件 -
根据权限搜索
find path -perm xxx其中
xxx为权限数字, 如:find /home -perm 644 -
根据所有权搜索
find path -user USER其中
USER为用户名, 如:find /home -user root -
删除匹配的文件, 使用
-delete操作find /home -name "*.py" -delete -
对匹配到的文件进行操作, 使用 -exec 操作, 注意格式
find /home -name "*.py" -exec rm {} \;删除以.py结尾的文件, 注意最后是空格和斜线分号find /home -name "*.c" -exec cat {} \;>all_c_file.txt, 将/home下所有以.c结尾的文件拼接后写入all_c_file_txt文件中-exec后面只能跟一个命令, 如果要执行多个命令, 可以把这些命令写入一个脚本中, 在 -exec 后执行该脚本即可 -
跳过特定的路径, 使用 -prune 操作
find /home \( -name ".git" -prune \) -o \( -type f -print \), 会跳过.git目录进行匹配