Linux find命令
说明:Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法:
find path -option [ -print ] [ -exec -ok command ] {} \;
参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime 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
示例:
- 示例1
命令 find . -type f 与 find -type f 一样
都是查找当前目录(包含子目录)中的所有一般文件
- 示例2
列出当前目录(包含子目录)中的指定的文件
find . -name "*.txt"
些命令会列举出所有以.txt结果的文件或目录
如果只想查找文件 则 find . -name "*.txt" -type f 即可
如果只想查找目录 则 find . -name "*.txt" -type d 即可
- 示例3
列出指定10天以内更新过的文件
find . -name "*.txt" -type f -mtime -10 即可
如果是想列出10天以外更新过的文件 find . -name "*.txt" -type f -mtime +10 即可
注意: 还有其它时间上的参数
说明:
1. accessed表示访问时间,读一次文件,这个时间就更新一次。一般使用cat命令读取文件后,这个时间会被更新。
2. changed表示最后修改时间,使用“ls -l”命令得到的就使这个时间,一般使用vi/vim命令修改文件后,这个时间会被更新。
3. modified表示状态改动时间,一般使用chown/chmod命令之后,这个时间会被更新。
- 示例4
在以上的基础上 继续查找 文件大小在10k以内的文件
find . -name "*.txt" -type f -mtime -10 -size -10k
文件大小在10k以上的文件 则
find . -name "*.txt" -type f -mtime -10 -size 10k
查找具有读写权限的文件 则
find . -name "*.txt" -type f -mtime -10 -size 10k -perm 644
列出他们的详细信息
find . -name "*.txt" -type f -mtime -10 -size -10k -exec ls -l {} \;
如果想删除这些文件
find . -name "*.txt" -type f -mtime -10 -size -10k -ok -rm -rf {} \;
此时删除是会提示 是否删除这个文件 输入 yes / no 即可
如果不想提示 则将命令中的 -ok 删除即可
- 示例5
从当前目录中按照创建时间倒序排序 取出前n条
find -type f -name "TEST4CWW*"|ls -t |head -n 5
今日暂到此处,待更新 ... ...