> Linux命令 >

find命令的用法

a) find命令选项基本格式
find 目录 -选项 动作[-print -exec -ok …]
b) find命令基本选项与使用方法
i. -name 按照文件名查找文件。
ii. 通配符:*:任意长度的字符串 ?:任意一个字符 [ ]:取值范围内的一个字符 [0-9]数字 [a-zA-Z]字母
iii. -perm 按照文件权限来查找文件。
iv. -user 按照文件属主来查找文件。
v. -group 按照文件所属的组来查找文件。
vi. -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/group中不存在。
vii. -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
viii. -newer file1 ! newer file2 查找更改时间比文件file1新但比文件file2旧的文件。
ix. -type 查找某一类型的文件,诸如:
a) d - 目录。
b) l - 符号链接文件。
c) f - 普通文件
x. -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
xi. -mtime -n +n 按文档更改时间来查找文档,-n指n天以内,+n指n天以前(modify)
xii. -atime -n +n 按文档访问时间来查(access)
xiii. -ctime -n +n 按文档创建时间来查找文档,-n指n天以内,+n指n天以前 (create)
xiv. amin cmin mmin 分别是按照访问 创建 更改文件的分钟计时
xv. -maxdepth n 查找的最大目录深度 层数
xvi. -mindepth n 查找的最小目录深度 层数
c) find命令选项的动作,与实现
i. -print: 将匹配的文件输出到标准输出。
ii. -fprint 文件名:将匹配的文件输出到文件。
iii. -exec:对匹配的文件执行该参数所给出的命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。
iv. -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
d) find案例一:查找当前目录下所有名称以.sh结尾的文件,判断是否具备执行权限
 
#!/bin/bash
find . -name "*.sh" -fprint file
for filename in        `cat file`
do
if [ -x $filename ];then
echo "$filename 具有执行权限"
else
echo "$filename 不具有执行权限"
fi
done
 
e) find案例二:在/logs目录中查找更改时间在5日以前的文件并删除它们:
 
$ find logs -type f -mtime +5 -exec rm {} \;
 
f) find案例三:在当前目录中查找所有文件名以.conf结尾、更改时间在5日以上的文件,并删除它们,在删除之前先给出提示。
 
$ find . -name "*.conf" -mtime +5 -ok rm {} \;
< rm ... ./conf/httpd.conf > ? n
 
按y键删除文件,按n键不删除。
g) xargs命令的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。
案例:查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件
 
find . -type f -print | xargs file
 
例子
 
find /root/bb/* -type f -size -1M -ctime -3 -exec rm -rf {} \; 
 
删除/root/bb/下的在1M以内,3天以内的普通文件
-size
-G
-M
-b
-type
d
l
f
 
 
(责任编辑:IT)