Linux系统下如何通过命令行递归删除指定目录下的文件和文件夹?
递归删除指定目录下所有文件及文件夹的方法(Linux新手友好)
嗨,作为Linux新手,一次性清理指定目录下的所有内容确实是个高频需求,我来给你分享几个实用且安全的方法,还有必须注意的坑!
方法1:用rm命令(最常用)
rm是Linux删除文件/目录的核心命令,加上参数就能实现递归删除:
场景A:保留目标目录,只删除里面的所有内容
如果你想留着原目录本身,只清空里面的文件和子文件夹,可以用:
rm -rf /path/to/your/target/*
不过要注意,*不会匹配隐藏文件/文件夹(以.开头的,比如.bashrc或者.config)。如果要连隐藏内容一起删,可以用:
rm -rf /path/to/your/target/{*,.*}
小提示:
{*,.*}是shell的通配符扩展,会同时匹配普通文件和隐藏文件,但要注意它会匹配.和..(当前目录和父目录),不过rm会忽略这两个,所以不用担心误删上级目录。
场景B:连目标目录一起删除
如果不需要保留原目录,直接删整个目录及其所有内容,更简单:
rm -rf /path/to/your/target
关于参数的解释:
-r(或--recursive):递归处理目录,会删除目录下所有子目录和文件-f(或--force):强制删除,不会弹出确认提示(即使文件是只读权限)
方法2:用find命令(更安全的选择)
如果你担心rm的通配符可能误操作,find命令会更精准,尤其适合新手避免踩坑:
保留目标目录,清空所有内容
find /path/to/your/target -mindepth 1 -delete
-mindepth 1:表示只处理目标目录下的子内容,不会删除目标目录本身-delete:直接删除匹配到的所有文件和目录
这个命令会自动处理所有类型的内容,包括隐藏文件,而且不会误触上级目录,安全性更高。
必看的安全提醒
作为新手,一定要注意这些细节,避免不可逆的误删:
- 先确认路径! 执行删除前,先用
ls -la /path/to/your/target查看目录内容,确保是你要删的东西 - 测试命令:可以先用
echo模拟删除,比如echo rm -rf /path/to/your/target/*,看看输出的删除路径是否正确,没问题再去掉echo执行 - 谨慎使用root权限:如果用
sudo执行删除,一定要加倍小心,绝对避免类似sudo rm -rf / *这种致命错误(多了空格就会删根目录) - 重要文件先备份:如果目录里有需要保留的内容,提前复制到其他位置,比如
cp -r /path/to/your/target /path/to/backup
内容的提问来源于stack exchange,提问作者user9543068
相关产品推荐
相关产品推荐

