当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux入门

linux中巧用xargs删除另外一个目录中的同名文件

linux中巧用xargs删除另外一个目录中的同名文件--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
假设有两个目录 /opt/test_a 和 /opt/test_b, /opt/test_b目录下不仅包含了/opt/test_a目录下的文件也包含其他文件,现在要删除/opt/test_b目录中与/opt/test_a目录中同名的文件,但是不删除同名的子目录,可以使用如下命令:

cd /opt/test_a && ls -p | grep -v /$ | xargs -I{} rm -f /opt/test_b/{}

说明:

. ls -p 参数将给列出的目录名最后加上/

. grep -v 参数指定反选择, /$指定以/结尾的搜索模式,因此该命令将输出不带/结尾的项,也就是只输出/opt/test_a目录中的文件名,不包含子目录。

. xargs命令的-I{} 指定用管道传递过来的输入替换后面命令中的{}字符串,重复多次,直至管道没有输入

注:xargs加上 -t 参数,可以看到替换的效果

这个技巧用在makefile中,制作make install 和make uninstall。 对应的make install 执行的命令为:

cd /opt/test_a && ls -p | grep -v /$ | xargs -I{} install -m 755 {} /opt/test_b/
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有