如何使用 zmv 命令将所有文件名和前导目录转换为标题(正确的大小写)。
我发现一个开始的例子是:
autoload -U zmv
zmv '(*).(*)' '${(C)1}.$2'
如果文件在子目录中,上述方法将不起作用。
或here
zmv '(**/)(*)~CVS~**/CVS' '${(C)1}${(L)2}'
递归小写文件和名称不是 CVS 的目录。这会尝试将小写文件名复制到标题大写目录(该目录尚不存在,因此也不起作用。
如果尝试转换为小写(来自 https://stackoverflow.com/a/152741/631775 ),以下内容效果很好:
find my_root_dir -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
但我想在这里做一个适当的案例。
最佳答案
这使用 rename
又名 prename
的 Perl 脚本版本。
find -depth -execdir rename 's/.*/\L$&/;s/[[:lower:]]+/\u$&/g' {} \;
它将整个名称小写,然后将每个单词的第一个字母大写。
由于在第一个 s
命令之后所有字符都已经是小写的,[[:lower:]]+
可以简化为 .+
.
请注意,“单词”的定义很松散,例如,“ABC6DEF7GHI”会变成“Abc6Def7Ghi”。
关于linux - 使用 zmv 或重命名将具有路径名的文件重命名为正确的大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33888818/