Find工具

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目录;
原文地址:https://www.cnblogs.com/deny/p/10000073.html