根据部分名称删除目录中的文件

根据部分名称删除目录中的文件

我想知道根据部分名称删除任何文件的最佳方法是什么,无论其扩展名是什么。

例子:

13-05-12_foo_something.jpg
13-06-01_something.png
13-05-05_foo_site.html

rm 目录中以及_foo_名称中的子文件夹内的所有内容。

答案1

简单的方法:

cd /path/to/directory
rm *_foo_*

或者

rm /path/to/directory/*_foo_*

星号 ( *) 匹配所有字符。

要获取有关正在执行的操作的说明,请使用rmwith-v选项。要在每次删除之前提示,请使用rmwith-i选项:

rm -vi *_foo_*

请参阅man rm以了解更多信息。

答案2

如果您也想在所有子目录中执行此操作,最简单的方法是启用 globstar shell 选项:

shopt -s globstar
rm **/*foo_*

#默认情况下应该有一个带注释的行(即以 开头) ~/.bashrc(我的是第 29 行):

# shopt -s globstar extglob

只要取消注释该行,你就可以访问一些改进的 bash 功能

相关内容