bash 中 Find 的一些用法

find 命令可以说是功能非常强大,但又很难掌握,我们还是通过例子来吧。

寻找过大的文件

大于4096k 的文件都有哪些,找出来

find . -type f -size +4096k  -exec ls -sh {} \;

代替tree命令

tree 命令并不全都支持了,这个可以代替

find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'

找到文件就地改名

所有名为 thumbnail.jpg 的文件,都改名为 1.jpg

find . -type f -name 'thumbnail.jpg' -execdir mv {} 1.jpg \;

统计文件行数

如下命令会统计当前目录下的所有 python 文件的行数

find . -name \*.py | xargs wc -l

在指定类型的文件中进行搜索

如下命令会在当前目录下的所有 python 文件中搜索 something 相关的位置并输出到 output.txt 文件中

find . -name '*.py' -exec grep 'something' {} \; > output.txt

清理老旧的文件

适合于在备份文件的目录,这里可以清理掉 15 天以前的备份,只保留最新的

find . -mtime +15 -exec rm -rf {} \;

清理node_modules

node_modules 一般很大,很多,不需要了应该能够干掉

` find . -type d -name 'node_modules'|awk -F'node_modules' '{print $1}'|uniq -c|grep -v .vscode |grep -v './Library/Caches'|grep -v '.nvm'|grep -v './Library/Application Support' `