Linux终端生存之道-find


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

评论
  目录