linux - 使用 zmv 或重命名将具有路径名的文件重命名为正确的大小写

标签 linux ubuntu zsh batch-rename

如何使用 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/

相关文章:

c - 在 excel() 中打开 .txt 文件

bash - test -L 命令在从提示符调用时返回的错误代码与从脚本内部调用时返回的错误代码不同

linux - zsh: undefined variable 时引发错误

linux - 无法运行测试 node.js http 脚本 : connection not found

Perl 无法识别 root 用户的模块/模块路径

linux - Linux "st"实用程序中的 "top"参数是什么意思?

python - Windows 到 Linux 脚本问题 : "IndexError: list index out of range"

ruby-on-rails - Ubuntu 终端 : I can't seem to launch programs from my terminal anymore. 我使用 sublime、rails 和 heroku

php - 如何对大文件使用 ssh2_scp_recv(内存限制)

linux - mkdir : cannot create directory ‘X’ : Permission denied