Linux下如何删除乱码文件名的文件

 更新时间:2026年11月01日 10:21:07   作者:崔杰城  
在Linux系统中,当文件名变成乱码或特殊字符时,常规删除命令会失效,本文教你使用find命令安全删除这些文件,并介绍如何排除指定目录,同时对比Bash extglob方法的局限性,帮你轻松解决文件删除难题

Linux删除乱码文件名的文件

Linux下经常会出现有文件的名称变为了特殊字符或乱码,导致无法删除的情况,这个时候我们可以使用一些方法删除,

比如

在当前目录下,删除除了 XXX 目录以外的所有内容(包括名称乱码的文件),可以用:

find . -mindepth 1 ! -name XXX ! -path './XXX/*' -exec rm -rf {} +

更推荐先预览一下会删哪些:

find . -mindepth 1 ! -name XXX ! -path './XXX/*' -print

确认没问题后再执行删除:

find . -mindepth 1 ! -name XXX ! -path './XXX/*' -exec rm -rf {} +

含义

-mindepth 1

表示不匹配当前目录 . 本身。

! -name XXX
! -path './XXX/*'

表示保留 XXX 目录以及 XXX 目录下的所有内容。

也可以用 Bash 的方式:

shopt -s extglob
rm -rf !(XXX)

但这个方式依赖 Bash 的 extglob,而且对隐藏文件处理不如 find 方式稳妥。

建议用 find。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论