删除文件名中包含特定字符串的文件

时间:2012-09-26 04:32:17

标签: linux shell ubuntu

如何删除包含字符串作为嵌入字符串的文件除外 使用通配符开始或结束。

我是一名业余爱好者,不到一个月就开始了Ubuntu。

2 个答案:

答案 0 :(得分:6)

rm ?*foo?*

删除包含foo的文件,前提是前后至少有一个字符,因此“foobar”和“barfoo”不会被删除,而“barfoobar”将被删除。

作为预防措施,请执行

ls ?*foo?*

首先要确保你没有删除错误的东西。并且要非常小心,不要意外地包含任何空格,因为 rm?* foo?* 几乎肯定非常糟糕。要提供一些保护,请将参数括在引号中,这样

rm "?*foo?*"

答案 1 :(得分:1)

我认为单一扩展模式不可能实现这一点。您可以使用grep进行过滤:

ls -d '*foo*' | egrep -v '^foo|foo$' | xargs rm

因此ls列出包含foo的所有内容,然后egrep删除开头/结尾处匹配的文件,最后xargs运行命令({{1}在这种情况下)每个余数。

The dangerous thing about this technique文件名可能包含换行符或星号等特殊字符,因此使用风险自负!