find 的基本语法
find [路径] [匹配条件] [动作]
参数说明:
- 路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
- 匹配条件:参数很多,一般是以kv对的形式给出。
- 动作:-print,-printf,-print0,-exec,-ok,-ls…
匹配条件中可使用的选项有二三十个之多,以下列出最常用的部份:
- -name pattern:按文件名查找,支持使用通配符 * 和 ?。
- -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
- -size [±]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
- -mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
- -user username:按文件所有者查找。
- -group groupname:按文件所属组查找。
find 命令中用于时间的参数如下:
- -amin n:查找在 n 分钟内被访问过的文件。
- -atime n:查找在 n*24 小时内被访问过的文件。
- -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
- -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
- -mmin n:查找在 n 分钟内被修改过的文件。
- -mtime n:查找在 n*24 小时内被修改过的文件。
在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。正数应该表示时间之前,负数表示时间之内。例如:-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。关于时间 n 参数的说明:
- +n:查找比 n 天前更早的文件或目录。
- -n:查找在 n 天内更改过属性的文件或目录。
- n:查找在 n 天前(指定那一天)更改过属性的文件或目录。
常用场景
查找特定文件名字的文件再哪里
我知道再 ~/Documents/Blog 这个文件夹下面,我有几个叫 ‘_config.yml’ 的文件,但是我不知具体再哪里,或者说我一个一个cd进去找太费劲。
chenshang@192.168.0.109:~/Documents/Blog$ ls
_config.landscape.yml db.json package-lock.json public source yarn-error.log
_config.yml node_modules package.json scaffolds themes
那我们就用 find . -name '_config.yml'
这个指令 .最后会列出我们需要的文件名为_config.yml的文件路径,然后我们就可以直接less 或者 cat 指令查看其中的内容了。
chenshang@192.168.0.109:~/Documents/Blog$ find . -name '_config.yml'
./node_modules/hexo-theme-landscape/_config.yml
./node_modules/hexo-cli/assets/_config.yml
./_config.yml
./themes/hexo-theme-matery/_config.yml
查找特定文件夹名字的文件再哪里
如果我要找的名字对应的事一个文件夹呢,只需要再加一个 -type d
参数即可.
chenshang@192.168.0.109:~/Documents$ find . -name Blog -type d
./Blog