-i 不区分大小写的搜索
-n N 只列举前N个匹配项目
-r 使用基本正则表达式
搜索名称或路径中包含“conf"的文件
locate conf
#使用Regex来搜索以“.conf"结尾的文件
locate -r '\.conf$'
[root@centos8 ~]#touch test2.log
[root@centos8 ~]#locate test2.log
[root@centos8 ~]#updatedb #更新数据库
[root@centos8 ~]#locate test2.log
/root/test2.log
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜索目录深度
-name "文件名称" #支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-iname "文件名称" #不区分字母大小写
-inum n #按inode号查找
-samefile name #相同inode号的文件
-links n #链接数为n的文件
-regex “PATTERN" #以PATTERN匹配整个文件路径,而非文件名称
-user USERNAME #查找属主为指定用户(UID)的文件
-group GRPNAME #查找属组为指定组(GID)的文件
-uid UserID #查找属主为指定的UID号的文件
-gid GroupID #查找属组为指定的GID号的文件
-nouser #查找没有属主的文件
-nogroup #查找没有属组的文件
-type 命令告诉
find
在找到的每个文件上执行后面的 xx 命令。
TYPE可以是以下形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件#查看/home的目录
find /home –type d -ls
与:-a ,默认多个条件是与关系,所以可以省略-a
或:-o
非:-not !
#查找/etc/下,除/etc/security目录的其它所有.conf后缀的文件
find /etc -path '/etc/security' -a -prune -o -name "*.conf"
-size [+|-]#UNIT #常用单位:k, M, G,c(byte),注意大小写敏感
#UNIT: #表示(#-1, #],如:6k 表示(5k,6k]
-#UNIT #表示[0,#-1],如:-6k 表示[0,5k]
+#UNIT #表示(#,∞),如:+6k 表示(6k,∞)
find / -size +10G
[root@centos8 ~]#find / -size +10G
/proc/kcore
find: ‘/proc/25229/task/25229/fd
find /etc -type f -size +1M -ls #普通文件,且大于1M
find -perm 755 会匹配权限模式恰好是755的文件
只要当任意人有写权限时,find -perm /222就会匹配
只有当每个人都有写权限时,find -perm -222才会匹配
只有当其它人(other)有写权限时,find -perm -002才会 匹配
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会
交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
#把etc里面后缀是.conf的后面加上.orig
find /etc/ -name "*.conf" -exec cp {} {}.orig \;
-name "*.conf" 用于找到以".conf"结尾的文件。
-exec cp {} {}.orig \; 用于将找到的文件复制到相同目录并加上".orig"后缀。
#提示删除存在时间超过3天以上的joe的临时文件
find /tmp -ctime +3 -user joe -ok rm {} \;
#在主目录中寻找可被其它用户写入的文件
find ~ -perm -002 -exec chmod o-w {} \;
#查找/data下的权限为644,后缀为sh的普通文件,增加执行权限
find /data –type f -perm 644 -name "*.sh" –exec chmod 755 {} \;
#以“天"为单位
-atime [+|-]#
# #表示[#,#+1)
+# #表示[#+1,∞]#根据权限查找
-# #表示[0,#)
-mtime #选项用于搜索文件的修改时间文件目录,单位以24小时计算;
-ctime #用于搜索文件的改变时间文件或目录,单位以24小时计算文件元数据(如权限、所有者、链接等)被修改的时间
#以“分钟"为单位
-amin #查找在指定时间曾被存取过的文件或目录,单位以分钟计算
-mmin #查找在指定时间曾被更改过的文件或目录,单位以分钟计算
-cmin #查找在指定时间之时被更改过的文件或目录;
find /var ! \( -user root -o -user postfix \) -mtime -7 -ls 不是 7天访问
cat test.txt | xargs 多行输入单行输出:
cat test.txt | xargs -n3 -n 选项 多行输出:
a b c
d e f
g h i
j k l
echo "nameXnameXnameXname" | xargs -dX -d 选项 可以自定义一个定界符:
name name name name
#用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题:
find . -type f -name "*.log" -print0 | xargs -0 rm -f
#统计一个源代码目录中所有 php 文件的行数:
find . -type f -name "*.php" -print0 | xargs -0 wc -l
#查找所有的 jpg 文件,并且压缩它们:
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
#结合 -t 选项可以打印出 xargs 执行的命令
ls | xargs -t -I{} echo {}
#-p 选项会在执行每一个命令时弹出确认,当你需要非常准确的确认每一次操作时可以使用 -p 参数,比##如,查找当前目录下 .log 文件,每一次删除都需要确认:
find . -maxdepth 1 -name "*.log" | xargs -p -I{} rm {}
多行输入单行输出: