我想知道根据部分名称删除任何文件的最佳方法是什么,无论其扩展名是什么。
例子:
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_*
星号 ( *
) 匹配所有字符。
要获取有关正在执行的操作的说明,请使用rm
with-v
选项。要在每次删除之前提示,请使用rm
with-i
选项:
rm -vi *_foo_*
请参阅man rm
以了解更多信息。
答案2
如果您也想在所有子目录中执行此操作,最简单的方法是启用 globstar shell 选项:
shopt -s globstar
rm **/*foo_*
#
默认情况下应该有一个带注释的行(即以 开头) ~/.bashrc
(我的是第 29 行):
# shopt -s globstar extglob
只要取消注释该行,你就可以访问一些改进的 bash 功能。