如何删除文件夹中的所有目录

如何删除文件夹中的所有目录

我想删除download文件夹中的所有目录。

/content/download/documents/
/content/download/music/
/content/download/videos/
/content/download/pictures/

我尝试使用删除它们,rm但它不起作用。

rm -rf '/content/download/*/'

答案1

通配符*不会在引号内扩展(无论是在单引号内还是在双引号内),因此您需要将其写在引号外:

rm -rf '/content/download/'*/

但是,仅当路径或文件名包含空格/换行符或 shell 特有的其他一些字符时才需要引号,以防止 shell 解释它们。

尾随/,*/将扩展到目录类型的所有文件符号链接解析后,因此还将包含目录的符号链接。对于那些人来说,扩张将是类似的/content/download/dirlink/。这些会发生什么取决于rm实施。对于基于 Linux 的系统上常见的那些,这将删除内容(递归地)符号链接的目标目录,但不是符号链接或目录本身。

另请注意,它不会删除隐藏目录。


如果您的 shell 是 bash,您可以在其手册中阅读更多信息,特别是:

答案2

find ~/Downloads -mindepth 1 -maxdepth 1 -type d | xargs rm -rf

此解决方案不依赖于您正在使用的特定 shell( bash、等)。zsh

相关内容