如何删除包含字符串作为嵌入字符串的文件除外 使用通配符开始或结束。
我是一名业余爱好者,不到一个月就开始了Ubuntu。
答案 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文件名可能包含换行符或星号等特殊字符,因此使用风险自负!