如何删除子文件夹内的所有文件但不删除子文件夹本身?

如何删除子文件夹内的所有文件但不删除子文件夹本身?

我知道如何递归删除所有子文件夹和所有文件。但在这种情况下,我需要保留子文件夹。基本上,我需要清空它们。

所以我有

rootdir/
        subA/           
        subB/
        subC/
        subN/

我想删除里面的所有文件subAsubN但不删除subA...subN

这个控制台命令是什么?我猜是切换到rm

答案1

您可以使用该find命令递归地仅识别常规文件(类型f

find rootdir -type f

如果结果符合您的预期,则删除它们

find rootdir -type f -delete

注意:这是一个真正的删除,而不是“移至垃圾箱”,因此在执行命令之前请 100% 确定这是您真正想要做的。

答案2

基于steeldriver的回答,您可以添加xargs,以便只调用一次gvfs-trash。在他的例子中,将对找到的每个文件find调用一次。如果有很多文件,这可能会很慢:gvfs-trashfind

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 {} \;请注意,反斜杠是必需的)

相关内容