递归列出所有文件名损坏的文件

递归列出所有文件名损坏的文件

我有一台 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 转义字符。

相关内容