ZSH:重命名嵌套文件夹中的文件,将特定字母大写
ZSH: rename files in nested folders, capitalize specific letters
我有很多 json 语言文件的嵌套文件夹,例如
da-dk.json
de-de.json
en-us.json
我需要将它们全部更改为大写连字符后的字母,如
da-DK.json
de-DE.json
en-US.json
我正在使用 zsh Mac。我最初认为我可以使用我使用过的名为 A Better Finder Rename 的 GUI 实用程序来完成它,但它显然不提供替换时的大小写转换。
我知道正则表达式并认为它类似于 find
^([a-z]{2})-([a-z]{2})
并替换为 -\U
但我不确定如何在命令行中执行此操作。
通过自制软件安装(如果尚未安装):
brew install rename
命令:
rename -n 's/\w{2}(?=\.)/uc $&/e' *.json
当输出看起来不错时,删除 -n
开关。
在传统的 shell 命令中:
for i in *.json; do
echo mv "$i" "${i:0:3}$(tr '[[:lower:]]' '[[:upper:]]' <<< ${i:3:2}).json"
done
当输出看起来不错时删除 echo
。
鉴于您使用的是 ZSH shell,您可以使用很棒的 zmv
命令
zmv '(**/)(*)-(*).json' '-:u.json'
您可能需要在 运行 上述命令之前 autoload zmv
。
简短说明:
(**/)
负责映射到 </code></li> 的嵌套文件夹
<li>第一个 <code>(*)
匹配连字符之前的部分并映射到 </code></li>
<li>第二个 <code>(*)
匹配连字符后的部分,在映射到 </code>.</li> 之前由 <code>:u
大写
this SO question and its answers中有一些有用的material。
我有很多 json 语言文件的嵌套文件夹,例如
da-dk.json
de-de.json
en-us.json
我需要将它们全部更改为大写连字符后的字母,如
da-DK.json
de-DE.json
en-US.json
我正在使用 zsh Mac。我最初认为我可以使用我使用过的名为 A Better Finder Rename 的 GUI 实用程序来完成它,但它显然不提供替换时的大小写转换。
我知道正则表达式并认为它类似于 find
^([a-z]{2})-([a-z]{2})
并替换为 -\U
但我不确定如何在命令行中执行此操作。
通过自制软件安装(如果尚未安装):
brew install rename
命令:
rename -n 's/\w{2}(?=\.)/uc $&/e' *.json
当输出看起来不错时,删除 -n
开关。
在传统的 shell 命令中:
for i in *.json; do
echo mv "$i" "${i:0:3}$(tr '[[:lower:]]' '[[:upper:]]' <<< ${i:3:2}).json"
done
当输出看起来不错时删除 echo
。
鉴于您使用的是 ZSH shell,您可以使用很棒的 zmv
命令
zmv '(**/)(*)-(*).json' '-:u.json'
您可能需要在 运行 上述命令之前 autoload zmv
。
简短说明:
(**/)
负责映射到</code></li> 的嵌套文件夹 <li>第一个 <code>(*)
匹配连字符之前的部分并映射到</code></li> <li>第二个 <code>(*)
匹配连字符后的部分,在映射到</code>.</li> 之前由 <code>:u
大写
this SO question and its answers中有一些有用的material。