如何删除名称中没有指定字符串的所有一级子文件夹

PyG*_*k03 4 command-line delete directory filename

我知道关于如何删除名称中带有带有特定字符串的所有文件 ,以及如何删除名称中带有特定字符串的所有子文件夹,有很多已回答的问题。

但是,没有关于如何删除名称中没有特定字符串的所有子文件夹的 问题。

那么,由于我最近遇到了这样的问题,是否有一个快速命令可以帮助解决这种情况?一个 bash 脚本也足够了。

编辑

通过subfolders,我的意思是仅一级子文件夹,因为我不想删除二级或三级子文件夹,这些子文件夹的名称可能没有字符串,一级子文件夹的名称可能带有字符串。

Jos*_*Jos 10

假设您想从find当前目录开始,并将其限制在第一级子目录:

find . -maxdepth 1

find命令有一个有用的标志-not(或!),它否定以下测试。因此,为了找到包含子字符串的名称,请添加

-not -name "*substring*"

重要提示:您还需要排除当前目录本身。否则,整个当前目录将被删除。

-not -name "."

然后您只想测试目录:

-type d

而且,如果一切正常,您想删除这些目录:

-exec rm -rf {} \;

上面写着“对于所有找到的目录,执行这个命令”。该{}是一个占位符的目录的名称(包括完整路径,因此它适用于正确的)。\;表示要执行的命令的结束。

总结:

find . -maxdepth 1 -not -name "*substring*" -not -name "." -type d -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

应该管用。但首先,在没有-exec零件的情况下尝试一下。