1、-path -prune用法
背景介绍:linux
在使用linux查找文件时,有些目录不须要查找,在查到这些目录时会打印不少无用提示信息,如:正则表达式
方法:code
使用-path -prune参数达到屏蔽这些目录的效果blog
排除一个:find ./ -path /proc -prune -o -name target_file -type d -printget
排除多个:find ./ (-path /proc -o -path ./cs ...) -prune -o -name target_file -type d -printfile
其中-path 参数必须在查找路径后边才会生效 -prune -o 而单词prune为修剪的意思,后边还有参数-o,是'或者'的意思搜索
若是/proc目录存在则 方法
2、文件名中存在特殊符号
若是文件名中含有特殊符号如[],()时,直接搜索文件会查找不到,由于这些符号会有特殊含义如‘[]’表示匹配范围,与正则表达式中的[]有相同用处,所以在搜索这类文件时,须要将其进行转义\[\],而后再用引号引发来,单、双都行,举例子:要查找文件im
命令:命名
find ./ -name 'faceid_id\[1\]_gendor_1_index_70_\[65,206,292,432\]_227x226.bmp'
这里能够用通配符中的[]来匹配括号中的数字
find ./ -name 'faceid_id\[1\]_gendor_1_index_70_\[[3-7]*,206,292,432\]_227x226.bmp'
,未加转义符的[3-7]表示匹配数字范围,*表示要匹配的数量是随意的。
3、限定查找的目录层深
find . -mindepth 1 -maxdepth 2 -iname A[1-9]2* -type d
该命令表示查找当前目录下的子目录及子目录的子目录名字符合A开始,后跟两个数字的模式目录。
4、嵌套查找
有时查找的一些文件会存放在符合某些模式的且层深稳定的路径下,尤为是在本地电脑上查找时,经过限定层深与模式,再在这些匹配到的目录下进行文件查找,能够加快查找过程,命令为:
find $(find -mindepth 1 -maxdepth 2 -iname a[1-9]*) -name filename -type f
或者
find `find -mindepth 1 -maxdepth 2 -iname a[1-9]*` -name filename -type f
$() 与``都是一个做用,将括号或反引号中的语句当命令优先执行
5、查找文件后重命名
查找某些格式的文件,而后修改文件名,如下两种命令均可以达到目的
find -name "*.bak" -exec rename 's/\.bak//' {} \;
find -name "*.bak" | xargs rename 's/\.bak//'