You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

zsh中如何删除文件夹内所有文件但保留文件夹本身

ZSH 删除目录内所有内容(保留目录本身)最优方案

直接在目标目录下执行以下命令即可:

rm -rf -- *(D)

写法说明

  • 末尾的(D)是ZSH自带的通配符修饰符,效果是让*能匹配到目录下所有条目,包括.开头的隐藏文件、隐藏文件夹,而且绝对不会匹配到代表当前目录的.和上级目录的..,从根上就不会触碰当前目录,连临时匹配到特殊目录的可能都没有,完全满足不能删当前文件夹的要求。
  • 中间加--是标准的命令参数终止标识,防止遇到名字以-开头的文件时,rm把文件名错当成命令参数,不管多奇怪的文件名都能正常处理。

方案适配性说明

你之前用的rm -rf {.,}*本质是拆成.*和*两个匹配规则:如果目录里没有隐藏文件,.*就会匹配到.和..这两个特殊目录,要么直接报通配匹配失败的错,要么弹出特殊目录操作的风险提示,命令跑不全,就得再补一次rm -rf *。两次独立调用rm,肯定会触发两次确认提示,就算用;把两条命令拼到一起也解决不了,毕竟是启动了两次程序。

这个单命令写法完全覆盖所有要求:

  • 无论目录内是否存在隐藏文件,都能一次匹配所有待删除内容,不需要补跑命令
  • 全程不会匹配到当前目录的特殊条目,不存在任何删除当前目录的风险
  • 仅调用一次rm程序,只会触发一次确认提示,没有重复弹窗问题

扩展用法(支持指定目录操作)

如果需要直接删除任意指定目录下的所有内容、保留目录本身,直接把目标路径写在通配符前即可,不需要切换工作目录,属于额外加分的适配场景:

# 示例:删除/your/target/path目录下所有内容,保留该目录本身
rm -rf -- /your/target/path/*(D)

怕手滑的话,第一次用可以先把rm -rf换成ls -la跑一遍,先列出来所有会被匹配到的内容,确认没选错再执行删除操作,稳一点。

内容的提问来源于stack exchange,提问作者Felix Dombek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:51:26