gpt4 book ai didi

bash - 删除所有文件但将所有目录保留在 bash 脚本中?

转载 作者:行者123 更新时间:2023-11-29 08:44:26 25 4
gpt4 key购买 nike

我正在尝试做一些可能非常简单的事情,我有一个目录结构,例如:

dir/
subdir1/
subdir2/
file1
file2
subsubdir1/
file3

我想在 bash 脚本中运行一个命令,该命令将递归地删除目录中的所有文件,但保留所有目录。即:

dir/
subdir1/
subdir2/
subsubdir1

对此合适的命令是什么?

最佳答案

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

find 以递归方式列出给定目录中与特定表达式匹配的所有文件。 -type f 匹配常规文件。 -print0 用于使用 \0 作为分隔符打印名称(因为任何其他字符,包括 \n,可能在路径名中) . xargs 用于从标准输入收集文件名并将它们作为参数。 -0 是为了确保 xargs 能够理解 \0 分隔符。

如果参数列表太大,

xargs 足够明智地多次调用 rm。所以这比尝试调用某事要好得多。像 rm $((find ...)。而且它比为每个文件本身调用 rm 快得多,比如 find ... -exec rm\{\}.

关于bash - 删除所有文件但将所有目录保留在 bash 脚本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1280429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com