Find工具主要用于操作系统文件、目录的查找,
1.语法参数格式为:
Find工具的语法格式:find path(路径) -option(参数) action(动作);
PATH路径:可以任意路径、绝对路径、相对路径(/、/etc/、/home/);
Option参数:-name(名称)、-type(类型)、-mtime(时间)、-size(大小)、-perm(权限)等;
-name filename #查找名为filename的文件; -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件; -size n[c] #查长度为n块[或n字节]的文件; -perm #按执行权限来查找; -user username #按文件属主来查找; -group groupname #按组来查找; -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前; -atime -n +n #按文件访问时间来查找文件; -ctime -n +n #按文件创建时间来查找文件; -mmin -n +n #按文件更改时间来查找文件,-n指n分钟以内,+n指n分钟以前; -amin -n +n #按文件访问时间来查找文件; -cmin -n +n #按文件创建时间来查找文件; -maxdepth #查找目录级别深度。
Action动作:exec(承接)、xargs(承接)、print(打印)等;
2、find案例
例1:查找Linux操作系统下ens33网卡名称的配置文件路径:
find / -name *ens33*
find /etc/ -name *ens33*
例2:查找Linux操作系统下所有的.rpm结尾的软件包所在的路径:
find / -name *.rpm find / -name *.rpm -name libselinux* find / -name *.rpm -name libselinux* ! -name libselinux-utils*
例3:找到如上软件包,并且将其拷贝至/tmp目录,指令如下:
for i in `find / -name *.rpm -name libselinux* ! -name libselinux-utils*`;do cp $i /tmp/ ;done cp `find / -name *.rpm -name libselinux* ! -name libselinux-utils*` /tmp/ cp $(find / -name *.rpm -name libselinux* ! -name libselinux-utils*) /tmp/ find / -name *.rpm -name libselinux* ! -name libselinux-utils* -exec cp {} /tmp/ ; find / -name *.rpm -name uwsgi* |xargs -i cp {} /tmp/ find / -name *.rpm -name libselinux* |xargs rm -rf (删除) find / -name *.rpm -name libselinux* ! -name libselinux-utils* |xargs rm -rf {} (删除)
Exec和xargs两个参数不同点:exec一次查找一个然后传递(不占资源),xargs全部找到再统一传递(占资源);
例4:Find工具-name参数案列
find /data/ -name "*.txt" #查找/data/目录以.txt结尾的文件; find /data/ -name "[A-Z]*" #查找/data/目录以大写字母开头的文件; find /data/ -name "test*" #查找/data/目录以test开头的文件;
例5:Find工具-type参数案列:
find /data/ -type d #查找/data/目录下的文件夹; find /data/ ! -type d #查找/data/目录下的非文件夹; find /data/ -type l #查找/data/目录下的链接文件。 find /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755; find /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;
例6:Find工具-size参数案列:
find /data/ -size +1M #查文件大小大于1Mb的文件; find /data/ -size 10M #查文件大小为10M的文件; find /data/ -size -1M #查文件大小小于1Mb的文件;
例7: Find工具-mtime参数案列:
atime,access time 文件被读取或者执行的时间; ctime,change time 文件状态改变时间; mtime,modify time 文件内容被修改的时间; find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件; find /data/ -mtime -30 -name "*.txt" #查找30天以内的log文件; find /data/ -mtime 30 -name "*.txt" #查找第30天的log文件; find /data/ -mmin +30 -name "*.log" #查找30分钟以前修改的log文件; find /data/ -amin -30 -name "*.txt" #查找30分钟以内被访问的log文件; find /data/ -cmin 30 -name "*.txt" #查找第30分钟改变的log文件。
例8:Find工具参数综合案列:
find /data/ -name "*.log" -type f -size +10k -exec cp {} /tmp/ ; #查找/data目录以.log结尾,文件大于10k的文件,同时cp到/tmp目录; find /data/ -name "*.log" –type f -size +10k -perm 644 -exec rm –rf {} ; #查找/data目录以.txt结尾,文件大于10k的文件,权限为644并删除该文件; find /data/ -name "*.log" –type f -mtime +30 –size +10M -exec mv {} /tmp/ ; #查找/data目录以.log结尾,30天以前的文件,大小大于10M并移动到/tmp目录;