处理动作-exec和参数替换xargs-1
处理动作的命令
exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性
传递给后面的命令
搜索指定文件并询问是否删除
find -name “f*” -ok rm {} \;
处理动作
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性
传递给后面的命令
不询问直接删除
find -name “f*” -exec rm {} \;
找到的文件全部移动到mnt目录下
find -name “f*” -exec mv {} /mnt/ \;
找到的文件全部改名
find /mnt -name “f*” -exec mv {} {}.bak \;
find示例
备份配置文件,添加.orig这个扩展名
find -name “*.conf” -exec cp {} {}.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 {} \;
查看/home的目录
find /home –type d -ls
参数替换xargs
由于很多命令不支持管道|来传递参数,而日常工作中有这个必要,所以就有了
xargs命令
xargs用于产生某个命令的参数, xargs 可以读入 stdin 的数据,并且以空格符
或回车符将 stdin 的数据分隔成为arguments
注意:文件名或者是其他意义的名词内含有空格符的情况
有些命令不能接受过多参数,命令执行可能会失败, xargs可以解决
例如一次创建n个文件
touch f{1..524288} 会显示参数过多而失败
这时可以用
echo f{1..10000} |xargs -n2 touch
xargs -n2会把参数切割成f1,f2一组然后回车换行f3,f4一组回车换行。。。再依次传送给touch命令执行。
| xargs -n1 就是把前面参数切割成1个字符一行
学员评价