Skip to content

Linux 中的 find 命令

find 命令可以用来按特定的模式搜索文件和文件夹。它以递归的方式进行搜索。

你可以用下面的命令,查找当前目录树下所有扩展名为 .js 的文件,并输出每个匹配文件的相对路径:

bash
find . -name '*.js'

例:

bash
yangwenlongdeMacBook-Pro:a yangwenlong$ touch a.js b.txt c.css
yangwenlongdeMacBook-Pro:a yangwenlong$ open .
yangwenlongdeMacBook-Pro:a yangwenlong$ find . -name '*.js'
./a.js

你可以在不同的根目录树下搜索文件:

bash
find folder1 folder2 -name filename.txt

要在当前目录树下搜索名称为 "node_modules" 或是 'public' 的目录,请输入:

bash
find . -type d -name node_modules -or -name public

你可以用  -not -path  参数排除某个路径:

bash
find . -type d -name '*.md' -not -path 'node_modules/*'

你还可以搜索当前目录树中内容超过 100 个字符(字节)的文件:

bash
find . -type f -size +100c

搜索大于 100KB,但小于 1MB 的文件:

bash
find . -type f -size +100k -size -1M

搜索至少 3 天前编辑的文件:

bash
find . -type f -mtime +3

搜索最近 24 小时编辑的文件:

bash
find . -type f -mtime -1

你可以使用  -delete  参数同步删除搜索到的文件。比如,下面的命令会删除最近 24 小时编辑的文件:

bash
find . -type f -mtime -1 -delete

你还可以在每个搜索结果上同时运行某个命令。在这里,我们运行  cat  来输出搜索到的文件的内容:

bash
find . -type f -exec cat {} ;

请注意结尾的  ; 。 命令执行时,搜索结果中的文件名会被自动填入花括号  {} 。