2022-11-30 linux find ! -path “./device/*“ -name 命令搜索排除文件夹,后面加 就可以xargs rm -rf 把搜索到文件删除。

一、find -name 无任何参数的效果,会搜索所有目录。

 二、排除某个目录方法一 find ! -path  "./device/*"  -name default_wallpaper*

!:表示执行这条指令的时候,排除后面 -path指定的目录,
-path:指定目录参数,后面跟的是绝对路径或相对路径,注意,后面的 /* 一定要写。
-name:指定搜索的文件名

三、方法二:使用find命令在linux系统中查找文件时,有时需要忽略某些目录,可以使用"-path 过滤的目录路径 -prune -o"参数来进行过滤。不过必须注意:要忽略的路径参数要紧跟着搜索的路径之后,否则该参数无法起作用

 

四、过滤多个文件夹方法 

 五、查找并且删除,后面加 就可以xargs    rm    -rf,我测试用-prune -o的话会把过滤目录下的所有文件都删调,用 ! -path的方式才可以实现。

六、参考内容

# 在当前目录下排除abc目录,查找所有文件
find . -path "./abc" -prune -o -print

# 在当前目录下排除abc目录,查找所有以.txt结尾的文件【方式一】
find . -path "./abc" -prune -o -name "*.txt" -print

# 在当前目录下排除abc目录,查找所有以.txt结尾的文件【方式二】
find . -name "*.txt" -not -path "./abc/*"

# 在当前目录下排除abc和def目录,查找所有以.txt结尾的文件
find . \( -path ./abc -o -path ./def \) -prune -o -name "*.txt" -print

# 在当前目录下排除abc目录和def/h.txt文件,查找所有以.txt结尾的文件
find . \( -path ./abc -o -path ./def/h.txt \) -prune -o -name "*.txt" -print

# 在当前目录下排除abc目录和def/h.txt文件和jk目录,查找所有以.txt结尾的文件
find . \( -path ./abc -o -path ./def/h.txt -o -path ./jk \) -prune -o -name "*.txt" -print

# 在当前目录下查找所有不是以.html结尾的文件
find . ! -name "*.html" -type f

七、参考文章

find 排除不希望搜索的目录 - 简书

find查找时排除目录及文件 - paul_hch - 博客园

find命令 如何排除某个目录_lbaihao的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/qq_37858386/article/details/128117605