一、find
find:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应操作
常用参数
-print:打印出批判文件的文件名(路径),\n是输出文件的分割符
-print0:\0(null)作为输出文件的分割符,xargs -0
-name:文件名必需匹配的字符串,\(-name“xx”-o -name“xx”\) 匹配多个字符串
-iname:忽略字母大小写
-path:匹配文件路径
-type:文件类型过滤
-size:文件大小搜索
-delete:删除查找到的文件
-perm:匹配具有特定权限值的文件
-newer:指定一个用于比较时间戳的参考文件,匹配出参考文件更新的所有文件
-user:制定某用户文件
-exec:借助-exec与其他命令进行结合,命令格式为:command {} \; 注意{}和\之间的空格
-ok:和-exec的作用相同,只是在安全模式下进行操作,按y键yes,按n键no
-atime:访问时间,用户最近一次访问文件的时间,单位:天 -amin 单位:分
-mtime:修改时间,文件内容最后一次被修改的时间,单位:天 –mmin 单位:分
-ctime:文件(例如权限或所有权)最后一次改变的时间,单位:天 –cmin单位:分
-表示小于(最近) +表示大于(超过) 没有- 或+ 表示数字当天
!:表示不匹配规则的文件
应用:
1.列出所有的.txt 或者 .h的文件:
find . -type f -name "*.txt" -or -name "*.h"
2.-exec:借助-exec与其他命令进行结合,命令格式为:command {} \; 注意{}和\之间的空格
二、xargs
xargs:构造命令行参数并运行命令
同管道的区别
管道是实现将前面的标准输出作为后面的标准输入
xargs是实现将标准输入作为命令的参数
xargs的默认命令是echo,默认定界符是空格(空白字符)
这意味着传递给xargs的输入如果包含换行和空白字符,通过xargs的处理,换行和空白将被空格取代,因此xargs是构建单行命令的重要组件之一
常用参数
-n number :多行输出,多个参数
-d X:自定义定界符
-I | -i replace_str:在xargs扩展时replace_str会被替换为从标准输入的每一行参数
-L number :标准输入读取非空number行作为参数,-L 1 等价于-I
-p:询问是否运行
-t:启用跟踪方式
-s size:设置命令行的最大字节数
-x:如果有任何 命令行大于 -s Size 标志指定的字节数,停止运行 xargs 命令
应用:
1.-n number:设置命令的参数个数
2.-I replace_str:命令参数替换
3、xargs和find算是一对死党
find的-print0和xargs的-0
ps:只要是把find的输出结果作为xargs的输入,就必须将-print0与find结合使用,以字符null(\0)来分割,同时,xargs -0将null作为定界符