如何删除目录和子目录中的文件而不是文件夹?

rey*_*yes 5 linux command-line ubuntu

如何删除目录和子目录中的文件而不是文件夹?

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

rm

slh*_*hck 3

GNUfind和 \xe2\x80\x9cmodern\xe2\x80\x9d 版本

\n

GNU find(随 Linux 发行版一起提供的版本)和find最近的 macOS 版本[哪些版本?]有一个delete选项。

\n
find . -type f -delete\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

这比下面的方法更有效,因为它不必使用rm. 考虑文件路径时它也更安全。

\n

GNU find 手册中有一个关于删除文件的非常广泛的部分

\n

传统的find

\n

传统的find可能没有-delete选择。在这种情况下,您可以使用该exec选项对匹配的文件 \xe2\x80\x93\xc2\xa0 在这种情况下rm对它们执行某些操作。

\n
find . -type f -exec rm {} \\;\n
Run Code Online (Sandbox Code Playgroud)\n

find通过管道输送到xargs

\n

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

\n
find . -type f -print0 | xargs -0 rm\n
Run Code Online (Sandbox Code Playgroud)\n

-print0选项对于避免破坏文件名包含空格的内容是必要的。一般来说,如果没有这个选项,不要使用这样的东西,它非常不安全。

\n