如何从Linux终端使用regex删除文件夹

c 2*_*c 2 5 regex linux rm find

说我有文件夹:

img1/
img2/
Run Code Online (Sandbox Code Playgroud)

如何使用来自Linux终端的正则表达式删除那些文件夹,匹配从img开始的一切?

Die*_*ano 21

使用find过滤目录

$ find . -type d -name "img*" -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

正如在评论中提到的那样,使用shell globs而不是正则表达式.如果你想要正则表达式

$ find . -type d -regex "\./img.*" -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

  • 改善这一点的一种方法可能是将`-maxdepth 1`添加到`find`就像`find.-type d -maxdepth 1 -regex"\ ./ img.*" - exec rm -rf {} \;`它会更快. (2认同)

oll*_*_uk 13

你可以用

rm -r img*
Run Code Online (Sandbox Code Playgroud)

应该删除当前工作目录中以img开头的所有文件和目录

编辑:

仅删除以img开头的当前工作目录中的目录

rm -r img*/
Run Code Online (Sandbox Code Playgroud)

  • 这也将删除与表达式匹配的任何文件,此命令删除与表达式匹配的所有内容,而不仅仅是目录。 (2认同)