查找目录中包含超过 130 个英文字符或 43 个亚洲字符的所有文件

查找目录中包含超过 130 个英文字符或 43 个亚洲字符的所有文件

我正在尝试在 NAS 上传输文件,但会出现此错误“加密共享文件夹中的文件或文件夹名称不能超过 143 个英文字符或 47 个亚洲 (CJK) 字符”,shell 中是否有命令可以查找满足该条件的每个文件?

答案1

实际限制不是字符而是字节。如果使用 UTF-8 编码,一个 CJK 字符通常需要 3 个字节,与英语/拉丁语相同(47×3=141,43×3=129)。

这意味着程序实际上并不需要计算不同类型的字符(特别是当它们混合时,例如日本.doc);它只需要测量文件名的原始长度 - 在大多数 Linux 系统上它已经存储为 UTF-8,因此不需要转换。

find ~/foo | perl -MFile::Basename -ne 'chomp($path = $_);
                                        print if length(basename($path)) > 140'

(如果没有另行说明,Perl 会将 stdin 输入作为原始字节处理。)

相关内容