课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
2分钟

处理动作-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个字符一行