unix 如何只删除目录而不修改文件

t30tvxxf  于 2023-05-22  发布在  Unix
关注(0)|答案(7)|浏览(128)

我在一个目录中有数百个目录和文件。
什么是最好的方式删除只目录(无论目录有什么在它或没有,只是删除他们所有)
目前我使用ls -1 -d */,并将它们记录在文件中,然后执行sed,然后运行它。这段路相当长。我正在寻找更好的方式删除只目录

jyztefdp

jyztefdp1#

要删除所有目录和子目录,只保留工作目录中的文件,我发现这个简洁的命令对我很有用:

rm -r */

它使用bash通配符*/,其中星星后跟斜杠只匹配目录和子目录。

xtfmy6hx

xtfmy6hx2#

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

vptzau2j

vptzau2j3#

首先,运行:

find /path -d -type d

为了确保输出看起来正常,则:

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

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

cunj1qz1

cunj1qz14#

简单的方法:-

rm -rf `ls -d */`
uajslkp6

uajslkp65#

仅限find命令(支持文件删除)\

find /path -depth -type d -delete

-type d只查找目录,然后**-depth确保将子目录放在父目录之前。-delete**删除过滤的文件/文件夹

khbbv19g

khbbv19g6#

rm -R $(ls-1-d */|grep..)

f4t66c6m

f4t66c6m7#

在一行中:

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

(backquotes)

相关问题