如何删除目录以外的所有文件?

How to delete all files except directories?

我一直在寻找删除工作目录中除子目录之外的所有文件的解决方案。

我找到了一种方法来删除所有目录中的所有文件,但我正在寻找一种方法来仅删除我所在的同一 "level" 中的文件。

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

find 命令递归地在目录中搜索与指定表达式匹配的文件和文件夹。

  • -maxdepth 1 将只搜索当前级别(当与 . 一起使用或使用目录时的顶层),有效地关闭递归搜索功能
  • -type f只指定文件,所有文件

@chepner 建议对上述进行改进,只需使用

find . -maxdepth 1 -type f -delete

不知道为什么我一开始没有想到它,但无论如何。

我觉得就这么简单:

$ rm *

在工作目录中时。

我已经测试过它并且它有效 - 它删除了工作目录中的所有文件并且没有影响任何子目录中的任何文件。

请记住,如果您还想删除隐藏文件,则需要:

$ rm * .*