在指定目录下查找文件:find
语法结构:
find 路径 参数 条件 动作
案例:
按照文件名查找:
1)查找/etc/下文件名以.d结尾的文件并显示详细信息:find /etc/ -name "*.d" -ls
2)查找/etc/下文件名以lo开头且不区分大小写的文件:find /etc/ -iname "lo*"
3)查找根目录下以sg开头的目录:find / -name "sg?"
按照文件大小查找:
1)查找/etc/下文件大于5M的文件:find /etc/ -size +5
2)删除/etc/下文件等于5M的文件:find /etc/ -size 5M
按照时间查找:
1)查找/etc/下修改时间超过5天的文件:find /etc/ -mtime +5
2)查找/etc/下访问时间少于5天的文件:find /etc/ -atime -5
3)查找/etc/下改变时间等于5天的文件:find /etc/ -ctime 5
按照文件所属人和所属组查找:
1)查找/home/下所属人为jack的文件:find /home/ -user jack
2)查找/home/下所属组为hr的文件:find /home/ -group hr
3)查找/home/下所属人为jack并且所属组为hr的文件:find /home/ -user jack -a -group hr
4)查找/home/下所属人为jack或者所属组为hr的文件:find /home/ -user jack -o -group hr
5)查找/home/下所属人不是jack的文件:find /home/ -not -user jack 或者find /home/ ! -user jack
按照文件类型:
1)查找/dev/目录下普通文件的字符文件:find /dev/ -type f
按照文件权限:
1)查找当前目录下权限为644的文件详细信息:find ./ -perm -644 -ls
按照正则表达式:
1)按照正则表达式查找当前目录以file结尾的文件:find . -regex ".*file"
2)按照正则表达式查找当前目录file{0..9}十个文件:find . -regex ".*file[0-9]"
3)按照正则表达式查找当前目录file{10..20}十一个文件:find . -regex ".*file[0-9]+"
4)查找当前目录下file{0..9}十个文件,并将查找的文件复制到/opt/目录:find . -regex ".*file[0-9]" -ok cp {} /opt/ \;
5)查找当前目录下file{10..20}十一个文件,并将查找的文件复制到/opt/目录:find . -regex ".*file[0-9][0-9]" -exec cp {} /opt/ \;
6)查找当前目录下满足文件名以file开头,以2结尾的文件,将查询的结果交由通道复制到/opt/目录:find ./ -name "file*" -a -name "*2" |xargs -i cp {} /opt/ 或者 find ./ -name "file*" -a -name "*2" |xargs -I {} cp -rf {} /opt
7)查找当前目录下文件名为file1或者file2的文件详细信息:file . \( -name "file1" -o -name "file2" \) -ls
正则表达式知识点:.*代表多个字符; \代表转义符 ; [0-9]代表任意一个数字;[a-z]代表任意一个字母;+代表前面字符一次或多次。-ok手动确定创建过程,-exce不需要手动确定创建过程;{}代表承接查找到的内容,\;代表命令结束的标志。多条件查找时-o需要使用小括号,()自身有含义所以使用\取消()自身的含义。 -i直接用{}就能代替通道之前的标准输出的内容,-I 需要事先指定替换字符。