
说明
本文find查找文件是使用【pcyph:https://blog.csdn.net/pcyph/article/details/41683383】的,后续批量操作是零度平时使用比较多的。
find查找文件
find命令最常用的是查找某个文件,如:
find ./ -name "abc.txt"
则会在当前目录及子目录下查找abc.txt文件
更常用的是查找某一类型的文件,如:
find ./ -name "*.txt"
则会在当前目录及子目录下查找所有txt文件,但是如果要查找多种文件类型呢?比如某文件夹下面所有.c文件和.h文件,可以这样做:
find ./ -name "*.[ch]"
这个方法有很大的局限性,只对单个字符结尾的文件有效,因为引号里面的是通配符,所以多个多字符结尾的文件只能用正则表达式来查找:
find ./ -regex ".*\.java\|.*\.xml"
上面这条命令会查找当前文件夹下面的所有java文件和xml文件,find默认采用emacs正则,会比较罗嗦,如果采用posix-extended正则会比较简单,如下:
find ./ -regextype posix-extended -regex ".*\.(java|xml)"
当然,如果不需要查找大量后缀,最简单的方式是使用-o选项,优点是比较好记:
find ./ -name "*.java" -o -name "*.xml"
还有比较低效的方法,查找出所有文件再过滤:
find ./ -type f | egrep "\.(java|xml)$"
批量操作
查找到的文件如果需要批量操作怎么办呢? 比如修改文件后缀、批量删除等
有时候有很多_bak文件,想把_bak去掉,使用linux命令
find ./ -name "*_bak" | awk -F "_" '{print $1}' | xargs -i -t mv ./{}_bak ./{}
或者有时候想删除很多图片文件,使用linux命令:
find ./ -regextype posix-extended -regex ".*(\.(gif|jpg|jpeg|png|ico)).*" -type f -exec rm -f {} \;
或者有时候需要查询很多xml或者配置文件中查找lingdu关键词,使用linux命令:
find ./ -name "*.xml" | xargs grep 'lingdu'
备注:你是否有一些常用的批量操作的linux命令呢,欢迎留言探讨!!!
思考题
现在小朋友的作业都很难,看看聪明的你是否可以解答并且说出原因,零度算收集了,以后你们家的小朋友需要的时候可以找我拿这些,哈哈!!!本次题目为:

备注:答案是26,你答对了吗?你知道为什么吗?
如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!
