删除一组文件夹在不同位置包含多个“-”作为其名称的一部分

Lam*_*aMo 1 directory file-management delete

如何删除多个-名称中包含多个文件夹的文件夹?

例如:

e97bf913-5759-4fff-bdaf-2f931b53a432/
39f953c5-dab0-420e-a650-a50a30f48097/
Run Code Online (Sandbox Code Playgroud)

dxn*_*rkx 5

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

警告:这将删除与此方案匹配的每个文件。所以文件如:

system-file-separated-by-minus 
Run Code Online (Sandbox Code Playgroud)

也会被删除。

'*' 部分代表所有字符(零、一个或多个字符),直到下一个给定,在这种情况下用减号分隔。如果您知道您的文件 - 前面有 8 个字符,下一个前面有 4 个字符,您可以说:

rm -r ????????-????-????-????-????????????
Run Code Online (Sandbox Code Playgroud)

每一个 ?代表任何字符。这将删除与您的方案匹配的所有文件。但是,您可能不想要的具有相同方案的文件也会被删除,因此请先检查这一点。


Fre*_*ddy 5

图案

*-*-*/
Run Code Online (Sandbox Code Playgroud)

匹配具有两个或多个连字符的目录。的*任何字符串(零个或多个字符)匹配。

如果您只想匹配不应以连字符开头和结尾的目录名称(如您的示例中所示),您可以使用

[!-]*-*-*[!-]/
Run Code Online (Sandbox Code Playgroud)

反而。该[!-]不是(匹配任何字符!),一个连字符。

ls -d [!-]*-*-*[!-]/
Run Code Online (Sandbox Code Playgroud)

首先看看这些是不是你要删除的。然后运行

rm -r [!-]*-*-*[!-]/
Run Code Online (Sandbox Code Playgroud)

递归删除它们。如果您确实需要强制删除,请添加-f到命令中。