Linux find 命令详解
Linux find
命令用来查找指定目录下的文件。
如果使用 find
命令时,不指定查找目录,则 find
命令将在当前目录下查找。
Linux find 语法
find path -option [ -print ] [ -exec -ok command ] {} \;
参数说明:
1)path:要查找的目录路径
2)print:表示将结果输出到标准输出
3)exec:对匹配的文件执行该参数所给出的 shell 命令 形式为 command {} ;,注意{}与 ; 之间有空格 ”{}“为占位符,“;“用来结束命令(command 命令可以接收多个参数,不知道要在哪里结束,所以需要指定结束位置)
4)ok:与exec作用相同, 区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-mindepth 最小目录层级
-maxdepth 最大目录层级
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去 n 天内被读取过的文件
-mtime n : 在过去 n 天内被修改过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
Linux find 实例
首先,让我们准备一些目录和文件用来演示 find 命令的用法,假设像下面这样:
$ tree
.
├── css
│ └── account
│ └── login.css
├── images
│ └── account
│ └── login
│ └── bg.png
└── js
├── libs
│ └── jquery.js
└── pages
└── account
└── login.js
10 directories, 3 files
- 实例1
这里我们不指定查找目录路径,默认会查找当前目录下的子目录和文件。
$ find -name 'login*'
./css/account/login.css
./js/pages/account/login.js
./images/account/login
- 实例2
我们指定在 ./images 目录下查找
$ find ./images -name 'login*'
./images/account/login
- 实例3
看了上面 2 个实例,你可能不禁要问,如果我不想同时查找目录和文件,只想查找其中一种怎么操作?
答案很简单,我们可以通过 -type
参数来指定查找文件类型。
接着往下看。
使用 -type d
指定查找目录类型
$ find ./ -name 'login*' -type d
./images/account/login
使用 -type f
指定查找一般文件类型
$ find ./ -name 'login*' -type f
./css/account/login.css
./js/pages/account/login.js
- 案例4
使用 mindepth 与 maxdepth 参数指定目录层级
# 只查找当前目录下(不含子目录)
$ find ./ -maxdepth 1 -name 'account*'
# 只查找二级目录/文件和三级目录/文件
$ find ./ -mindepth 2 -maxdepth 3 -name 'account*'
- 案例5
通过指定 -mtime 参数来查找指定时间被修改过的文件。
# 查找 7 天以前的日志
find ~/logs/fe -mtime 7
# 删除 7 天以前的日志
find ~/logs/fe -mtime 7 -exec rm {} \;
使用 -ok 指定删除要进行二次确认
# 删除 7 天以前的日志,二次确认后才删除文件
find ~/logs/fe -mtime 7 -ok rm {} \;
还可以结合 xargs 命令来完成删除文件
# 删除 7 天以前的日志
find ~/logs/fe -mtime 7 | xargs rm
- 案例6
通过指定 -size 参数来查找大于指定大小的文件
# 查找 /data 目录下大于 1000k 的文件
find /data -size +1000k
Linux find 命令小结
Linux find 命令主要用于文件或目录查找。
1、语法
find path -option [ -print ] [ -exec -ok command ] {} \;
2、不指定查找目录会默认查找当前目录(及其子目录)
3、通过 -type 参数指定查找文件类型(-type d 查找目录;-type f 查找一般文件)
4、通过 -mindepth 和 -maxdepth 参数指定查询目录的层级
5、通过 -mtime 参数指定查找文件的修改时间
6、通过 -size 参数指定查找文件大小
本文地址:https://www.tides.cn/p_linux-find