如何删除目录和子目录内的文件但不删除文件夹?

如何删除目录和子目录内的文件但不删除文件夹?

如何删除目录和子目录内的文件但不删除文件夹?

我需要能够在 Linux 命令行上执行此操作。

rm

答案1

GNUfind和“现代”版本

GNU find(Linux 发行版附带的版本)和find最近的 macOS 版本[哪些?]中有一个delete选项。

find . -type f -delete

这将删除当前目录和子目录中的所有内容。目录将保留在原处。

这比下面的方法更有效率,因为它不需要使用 分叉一个新进程rm。考虑文件路径时它也更安全。

GNU find 手册有关于删除文件的非常详细的部分

传统的find

传统方式find可能没有-delete选项。在这种情况下,您可以使用选项exec对匹配的文件执行某些操作 - 在本例中rm为 ing。

find . -type f -exec rm {} \;

find输送到xargs

您还可以使用find输出来输入xargs,它将文件路径作为rm命令的参数。

find . -type f -print0 | xargs -0 rm

-print0选项是必需的,可避免文件名包含空格导致破坏。一般情况下,如果没有此选项,请勿使用此类选项,因为它非常不安全。

相关内容