如何只删除文件,但保留目录结构?

如何只删除文件,但保留目录结构?

我想删除每个文件,但保留文件夹结构。有办法吗?

注意:(我使用的是 GNU bash 4.1.5)。

答案1

尝试这个:

find . ! -type d -exec rm '{}' \;

这将删除当前工作目录下的每个文件(不包括目录)。使用此命令时要格外小心。

如果您机器上的版本find支持,您也可以使用

find . ! -type d -delete

答案2

您可以使用以下命令find来查找每个文件,但保持目录结构:

$ find /some/dir -type f -exec rm {} +

根据这个标题为 Unix 和 Linux 的问答:gnu 查找并屏蔽某些 shell 的 {} - 哪个?{},对于像 Bash 这样的现代 shell ,用单勾 ( )转义'似乎不再是必要的。

答案3

递归删除当前目录和子目录中每个常规文件的简单方法:

zsh -c 'rm **/*(.)'

只有zsh有通配限定符按类型匹配文件。但是,该rm命令不适用于目录,因此在 bash 中,您可以使用

shopt -s globstar
rm **/*

这对于除此之外的命令不起作用rm。一般来说,您可以使用find

find . -type f -delete

或者如果你find不支持-delete

find . -type f -exec rm {} +

答案4

我有类似的要求,从路径及其子目录中删除文件(按时间过滤)而不删除目录结构。

我使用了以下对我有用的格式。

查找/test123/home/test_file_hip/data/nfs -mtime +6 -type f -exec rm {} \;

语法:find(文件路径)-mtime(大于或小于天)-type f -exec rm {} \;

-type : 为“d”目录提及文件“f”的类型 -exec : 执行命令 rm : 删除 {} : find 命令的输出

注意:使用前请先测试。如果我遗漏了什么,请随时纠正或更新。

相关内容