如何在Centos中删除目录的内容


9

我需要删除CentOS中文件夹的所有内容,而不是文件夹本身。

例如:我有一个名为“ MYFOLDER”的文件夹,其中包含子文件夹FOLD_1,FOLD_2,FOLD_3,FOLD_4 ...等,以及一些文件。我需要删除所有这些文件夹和文件,而不是容器文件夹MYFOLDER。我需要该目录来指示上一个过程的结果。

我尝试使用该rm -rf 命令,但这也删除了容器文件夹。

Answers:


11

而是删除文件夹的内容。

rm -r MYFOLDER/*

1
请注意,这不会隐藏MYFOLDER中的文件/目录
tylerl 2011年

1
@tylerl:如果您shopt -s dotglob先设置,它就可以。
jgoldschrafe 2011年

这需要您手动批准降序进入每个子目录的y / n,这完全是浪费时间。正确的命令将自动处理所有问题,因此您不会被50个提示卡住。
CodeMed

rm -R /path/to/myfolder/*是避免过多请求批准删除每个文件和子文件夹的正确语法。注意资本R
CodeMed

5

您可以使用:

rm -r MYFOLDER/{.[^.],.??*}

这也会删除隐藏的文件和文件夹。如果MYFOLDER目录中的文件太多,则应改为运行:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r

我的meta/目录中有超过500k文件,因此我想尝试使用xargs替代方法,但是我收到以下错误消息: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK

1
确保您使用的是bash外壳。外壳程序必须支持文件格式的“括号扩展”和“正则表达式”。
Mircea Vutcovici

3

我认为,最简单的方法是删除整个目录(包括目录本身),然后重新创建文件夹。在某些情况下,这不是一个好的解决方案(例如无人看管的脚本或更复杂的管道),但是您没有指定为什么不想删除该文件夹。

rm -rf foldername
mkdir foldername

哎呀。您确实指定了(我重新阅读了您的帖子)。好了,仍然可以删除和重新创建。特别是如果您将命令链接在一起,例如

rm -rf foldername && mkdir foldername

要么

rm -rf foldername; mkdir foldername

有时,您在父文件夹中没有权限,或者想要保留您不知道的某些属性。例如,您不能以非root用户身份删除主文件夹,但可以删除其下的所有内容。
2011年

这应该是公认的答案。+1
CodeMed



0

我强烈推荐这种替代方法(它还会删除名称中带有空格的文件):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.