rm与grep联合使用的问题

zhouyang209117 2013-12-08 09:09:21
大家好,操作系统是Ubuntu,当前目录下有a.mp sample1.aux sample.aux这三个文件,现在我想把不是以.mp结尾的文件删除,先执行以下命令
ls -1 | grep -v .*\\.mp
返回了不是以.mp结尾的文件名,显示如下
sample1.aux
sample.aux
前面再加上删除命令
rm `ls -1 | grep -v .*\\.mp`
它不能删除文件sample1.aux sample.aux,而是直接报"rm: 缺少操作数"的错误.这个问题困扰我好几天了,因为我已经多次这样删除文件了.哪位朋友给我指导下,万分感谢.
...全文
500 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljc007 2013-12-09
  • 打赏
  • 举报
回复
1、ls命令的-1选项是多余的,改成: ls | grep -v .*\\.mp 2、grep命令里面的.*\\.mp这种写法是不严谨的,继续改: ls | grep -v "\.mp$" 3、传递给xargs命令进行删除: ls | grep -v "\.mp$" | xargs rm -f 4、考虑到文件名可能包含空格: ls | grep -v "\.mp$" | xargs -0 rm -f 5、没有必要的情况下,尽量不要使用rm命令的-r选项,比如3楼的写法是非常危险的。
空的 2013-12-08
  • 打赏
  • 举报
回复

find . -type f -name "*.aux" | rm -f 
or
ls -1 | grep -v  .*\\.mp | rm -f 
max_min_ 2013-12-08
  • 打赏
  • 举报
回复


find . -name "*.mp" | xargs rm -rf 
iasky 2013-12-08
  • 打赏
  • 举报
回复
你的方式有点问题 grep后 | xargs rm吧
iasky 2013-12-08
  • 打赏
  • 举报
回复
用find吧
find . -name "*.mp" | xargs rm -f
没有测试,应该没有问题。

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧