我知道如何递归删除所有子文件夹和所有文件。但在这种情况下,我需要保留子文件夹。基本上,我需要清空它们。
所以我有
rootdir/
subA/
subB/
subC/
subN/
我想删除里面的所有文件subA
,subN
但不删除subA
...subN
这个控制台命令是什么?我猜是切换到rm
答案1
您可以使用该find
命令递归地仅识别常规文件(类型f
)
find rootdir -type f
如果结果符合您的预期,则删除它们
find rootdir -type f -delete
注意:这是一个真正的删除,而不是“移至垃圾箱”,因此在执行命令之前请 100% 确定这是您真正想要做的。
答案2
基于steeldriver的回答,您可以添加xargs,以便只调用一次gvfs-trash。在他的例子中,将对找到的每个文件find
调用一次。如果有很多文件,这可能会很慢:gvfs-trash
find
find . -type f -print0 | xargs -0 gvfs-trash
答案3
您也可以使用命令执行此操作rm
,但必须重复执行此操作。
你可以先cd
用这个进入父目录
cd /rootdir
之后你必须运行
rm -rf ./folder/*
将文件夹替换为您要清空的文件夹的名称(例如 subA)。
重复此操作直到所有文件夹都为空。
请注意,-rf
删除操作也会删除要清空的文件夹内的所有文件夹
答案4
-exec
您可以这样做:(find rootdir -type f -exec rm {} \;
请注意,反斜杠是必需的)