我有一台 Linux 服务器,上面有一些目录和文件结构。显然有人以某种方式上传了一堆文件名,这些文件名被损坏了。请考虑以下示例:
└── parent
├── foo1.jpg
├── f+�o2.jpg
└── foo+�.html
大约有 1000 个文件和目录,因此手动修复并不是一个好选择。有没有办法用一个终端命令找到所有损坏的名称?也许有一个命令可以过滤包含非 ASCII 符号或类似内容的名称?最佳做法是什么?谢谢!
答案1
假设您只是想识别包含非 ASCII 字符的文件名:
LC_ALL=C find /path/to/files | grep -P "[\x80-\xFF]"
如果这对你不起作用,我建议你下载并安装detox
。来自它的手册页:
Detox 实用程序可重命名文件,使其更易于使用。它可删除空格和其他类似的麻烦。它还可翻译或清理以 8 位 ASCII 编码的 Latin-1 (ISO 8859-1) 字符、以 UTF-8 编码的 Unicode 字符以及 CGI 转义字符。