linux中find的命令的学习:
用在某个目录下,用于查找特定的文件。
find命令的格式: find [-path ..] -options [-print -exec -ok]
find -name 按照文件名查找,
例:
在当前目录及子目录中,查找大写字母开头的txt文件
find . -name "[A-Z]*.txt" [-print]
find -perm 按照权限查找
例:
为了在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件
find . -perm 755 -print
find -prune 忽略某个目录
例:
如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用:
find /apps "/apps/bin" -prune -o -print
find -user 查看属主文件
例:
查找当前目录中属主是root的文件
find . -user root -print
查找属主被删除的文件
find .-nouser -print
find -group 查看属组的文件
例:
find . -group root -print
查看属组被删除的文件
find .-nogroup -print
find -mtime 按照更改时间查找文件
例:
在/var/adm目录下查找更改时间在3日以前的文件
find /var/adm -mtime +3 -print
查找一天内被访问的文件,也可以用atime
find . -atime -1 -print
查找一天内状态被改变的文件,用ctime
find .-ctime -1
查找10分钟以前状态被改变的文件 cmin
find . -cmin +10 -print
find -newer 查找比某个文件新或旧的文件
例:
查找比aaa.bin新的文件
find . -newer "aaa.bin" -type f -print
查找比aaa.bin旧的文件
find .!-newer "aaa.bin" -type f -print
查找更改时间比文件age.awk新但比文件belts.awk旧的文件:
find . -newer age.awk ! -newer belts.awk -exec ls -l {} \;
find -type 查看文件类型
按linux下的文件类型查找 s d f(普通文件 -) b(块设备) p l c(字符设备)
例:
查看当前目录下的普通文件
find . -type f -print
find -size 按文件大小查找
例:
查找等于6字节的文件
find -size 6c -print
查找超过1M的文件
find -size +1M -print
查找长度超过10块的文件(一块等于512字节)
find -size +10 -print
注意以块为单位查找 ,数字后不加东西,以字节查找,数字后加c,M,k按照上述例子所示。
find -depth 先按照文件查找,然后进入子目录中查找
例:
在下面的例子中,find命令从文件系统的根目录开始,查找一个名为aaa的文件它将首先匹配所有的文件然后再进入子目录中查找
find / -name "aaa" -depth -print
find -exec 和-ok 匹配到一些文件后,进行其他的操作
-ok 的好处是 执行前先要确认
例:
查找del.txt并删除,删除前提示确认
find . -name "del.txt" -ok rm {} \;
查找aa.txt 并备份为aa.txt.bak
find . -name 'aa.txt' -exec cp {} {}.bak \;
查找aa.txt 归档压缩为aa.txt.tar.gz 并删除aa.txt
find . -name "aa.txt" -type f -exec tar -zcvf {}.tar.gz {} \; -exec rm -rf {} \; > /dev/null
find与xargs一起使用
find 与exec联合使用的时候,每次find查找的所有文件一次性的传递到exec中,如果文件很多的话,容易造成溢出或者效率低等问题,所以使用xargs,文件一批批的传递下去。
例:
下面的例子在整个系统中查找内存信息转储文件(core dump),然后把结果保存到/tmp/core.log文件中:
find / -name "core" |xargs echo " " >/tmp/core.log
在下而的例子中,我们用grep命令在所有的普通文件中搜索device这个词:
find -type -f|xargs grep "device"
find的基本功能先讲到这。