1.find 查找文件时排除指定目录
find /path/to/search -path /path/to/search/exclude_dir -prune -o -type f -name "*.txt" -print
在这个命令中:
/path/to/search
是你想要搜索的顶级目录。-path /path/to/search/exclude_dir
指定了要排除的目录的路径。-prune
选项告诉find
命令不要进入-path
指定的目录。-o
是逻辑“或”(OR)的意思,它用于连接-prune
和后面的搜索条件。由于-prune
返回 true(表示已经排除了该目录),find
不会执行后面的-type f -name "*.txt"
条件在该目录内。但是,在其他未被排除的目录中,find
会执行这些条件。-type f
指定只查找文件(不包括目录)。-name "*.txt"
指定只查找扩展名为.txt
的文件。-print
是find
命令的默认操作,用于打印找到的文件路径。在这里显式地写出来是为了清晰起见,但实际上可以省略。
也可以多次使用 -path ... -prune -o
的组合,或者用括号将它们组合起来(注意,括号需要用反斜杠转义或使用单引号/双引号)
find /path/to/search \( -path /path/to/search/exclude_dir1 -o -path /path/to/search/exclude_dir2 -o -path /path/to/search/exclude_dir3 \) -prune -o -type f -name "*.txt" -print
常见选项
-
按文件名查找
-name pattern
:按照文件名模式进行匹配搜索,支持通配符。-iname pattern
:类似于-name
,但忽略文件名的大小写。
-
按文件类型查找
-type type
:按照文件类型进行匹配搜索。type
可以是以下几种类型之一:f
:普通文件d
:目录l
:符号链接b
:块设备文件- c:字符设备文件
- s:套接字文件
- p:命名管道文件
3.按文件大小查找
-size [+|-]n[cbkMG]:按照文件大小进行匹配搜索。+表示大于,-表示小于,n是具体的大小,[cbkMG]是可选的单位后缀,分别表示字节、KB、MB、GB和TB。
4.按文件时间查找
-mtime [+|-]n:按照文件修改时间进行匹配搜索。+表示早于,-表示晚于,n表示天数。
-atime [+|-]n:按照文件访问时间进行匹配搜索。
-ctime [+|-]n:按照文件状态改变时间进行匹配搜索。
5 .按文件权限查找
-perm mode:按照文件权限进行匹配搜索。mode可以使用八进制或符号格式表示权限。
6.按文件属主或属组查找
-user owner:按照文件所有者进行匹配搜索。
-group group:按照文件所属组进行匹配搜索。
7. 其他选项
-exec command {} \;:对搜索到的每个文件执行指定的命令。{}会被搜索到的文件名替换。
-ok command {} \;:与-exec选项类似,但在执行命令之前会询问用户是否继续。
-delete:删除搜索到的文件。
-print:将搜索到的文件名打印到标准输出(默认操作)。
-ls:类似于ls -l命令的输出格式,显示文件的详细信息。
-print0:以NULL字符作为分隔符输出搜索到的文件名,可以处理文件名中包含空格或其他 特
8.殊字符的情况。
-quit:在搜索到第一个匹配项后立即退出,不再继续搜索。
-maxdepth levels:限制搜索的最大深度。
-mindepth levels:限制搜索的最小深度。
-prune:排除指定的目录,不进入其中进行搜索。
-path pattern:类似于-name,但匹配的是文件的完整路径。
-ipath pattern:类似于-path,但忽略模式的大小写。
-regex pattern:使用正则表达式进行匹配搜索。
-iregex pattern:类似于-regex,但忽略正则表达式的大小写。
实用示例
1. 搜索当前目录下所有扩展名为.txt的文件:
find . -name "*.txt"
2.搜索/home目录下大于1MB的普通文件:
find /home -type f -size +1M
3.搜索/var/log目录下修改时间早于7天前的日志文件:
find /var/log -type f -mtime +7
4.搜索/etc目录下所有属于root用户的文件:
find /etc -user root
5.删除当前目录及其子目录中所有扩展名为.bak的文件:
find . -name "*.bak" -exec rm {} \;
6.搜索当前目录下所有名字中包含file的文件,不区分大小写:
find . -iname "*file*"
7.搜索/usr/bin目录下所有符号链接文件:
find /usr/bin -type l
8. 排除指定目录进行搜索:
find /path/to/search -path /path/to/search/exclude_dir -prune -o -type f -print
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Linux 下find常用命令整理(更新ing)
发表评论 取消回复