如何仅删除目录并保持文件保持不变

kop*_*kan 52 unix directory rm

我在一个目录中有数百个目录和文件.

删除目录的最佳方法是什么(无论目录中是否包含任何内容,只需删除它们)

目前我使用ls -1 -d */,并将它们记录在一个文件中,然后执行sed,然后运行它.这很长.我正在寻找更好的方法来删除目录

Cas*_*Cas 169

这更简单,对我有用:

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

  • 我可以在这里提出建议吗?你可以做`rm -rf ./*/`吗?答案是距离`rm -rf /`只有一个字符 (10认同)
  • 跳过y/n个问题:rm -rf*/ (8认同)
  • 这是得票最高的答案,但我正在对此进行测试,因为我正在尝试做同样的事情,但我认为这个答案只是删除了所有内容,并且没有执行原始问题所要求的操作。使用时要小心。Catalint/Jeremy 的个人资料答案可以更好地解决这个问题,至少对我来说是这样。我的情况是,我有一些文件夹包含我想要保留的文件,但也有一堆我想要删除的空垃圾文件夹,因此基于 ```find 的命令。-max深度 1 -min深度 1 -type d``` 是更好的选择 (2认同)

cat*_*int 20

find . -maxdepth 1 -mindepth 1 -type d

然后

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

要添加说明:

find由于开始在当前目录中.,并保持在当前目录中只-maxdepth-mindepth两个设置1.-type d告诉find我只匹配目录的东西.

find-exec在这种情况下,还有一个可以将结果传递给另一个函数的标志rm.的'{}' \;是这些结果的传递方式.请参阅此答案以获得有关内容{}\;操作的更完整说明


ont*_*ia_ 12

第一次运行:

find /path -d -type d
Run Code Online (Sandbox Code Playgroud)

为了确保输出看起来很清晰,那么:

find /path -d -type d -exec rm -rf '{}' \;
Run Code Online (Sandbox Code Playgroud)

-type d只查找目录,然后-d确保将子目录放在父目录之前.


Mou*_*ood -19

一行:

rm -R `ls -1 -d */`
Run Code Online (Sandbox Code Playgroud)

(反引号)

  • 不要通过管道传输“ls”的输出;**特别是**不要使用“rm -r”。当路径名包含空格时,它会失败。 (6认同)