在 Linux 中,要删除一个文件夹中的所有文件(而不是删除该文件夹本身),您可以使用以下几种命令和方法。
使用 `rm` 命令结合通配符
bash
rm /path/to/directory/
这会删除目录内(除了隐藏文件)的所有非空对象。如果您确定目录内的文件都没有子目录,可以尝试这种方式,不过它不会影响隐藏文件(以`.`开始的文件)。
处理包含空格或其他特殊字符的文件名
为了确保即使是含有空格或者特殊字符的文件名也能正确处理:
bash
find /path/to/directory/ maxdepth 1 type f print0 | xargs 0 rm
这段命令将找到目录下(非递归查询,只搜索该目录层)所有的常规文件,包括有空格或特殊字符名称的,并删除它们。
如果你不介意使用递归操作删除该层级中的文件(含隐藏和不含有隐藏)可以这样做:
bash
rm /path/to/directory/{.[!.],}
但这对文件名中的点可能不那么适用且在某些系统上行为可能会有所不同,建议更倾向于安全和通用性。
删除文件及隐藏文件,但保留文件夹本身
使用 `rsync`
`rsync` 可以快速地清空文件夹(不包括根文件夹)
bash
rsync a delete /dev/null /path/to/directory/
使用组合命令(适用于大多数场景)
为了既保留根级目录,又清空所有内容:
bash
(cd /path/to/directory && rm .)
上述命令通过先改变目录到要清理的目标目录内来执行 `rm`。需要注意这个操作也会移除隐藏文件。
在执行以上任何一种操作前,请务必确保您已经备份了重要数据或明确知道自己在做什么,因为删除的操作往往是不可逆的。如果你只是想暂时移除它们以便释放空间或其他操作的话,在删除之前先考虑使用更保守的方法如简单的归档到 .tar 文件等。
发表评论