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

时间:2011-05-10 16:19:08

标签: unix directory rm

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

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

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

5 个答案:

答案 0 :(得分:153)

这更简单,对我有用:

rm -r */

答案 1 :(得分:16)

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'{}' \;是这些结果传递的方式。 See this answer for a more complete explanation of what {} and \; do

答案 2 :(得分:11)

首先,运行:

find /path -d -type d

确保输出看起来很清晰,然后:

find /path -d -type d -exec rm -rf '{}' \;

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

答案 3 :(得分:0)

简单方法:-

  db = new sqlite3.Database('./event.db');

答案 4 :(得分:-13)

在一行中:

rm -R `ls -1 -d */`

(反引号)