Bla*_*ckR 5 command-line batch-rename
我是一个新手,我到处搜索这个,我也尝试过将小写重命名命令与一些正则表达式结合使用以获得标题案例而不是小写,但我不是很成功。
此命令将给定文件夹中的所有内容(文件 + 文件夹)转换为小写:
while IFS= read -r -d '' file; do mv -b -- "$file" "${file,,}"; done < <(find . -depth -name '*[A-Z]*' -print0)
Run Code Online (Sandbox Code Playgroud)
这是我对标题案例的尝试,它有效,但它不是递归的:
find . -name "*.flac" -print0 | while read -d $'\0' file; do rename 's/(^|[\s\(\)\[\]_-])([a-z])/$1\u$2/g' *; done
Run Code Online (Sandbox Code Playgroud)
这些只是我的一些尝试,如果有更好、更短的解决方案,我会非常喜欢那些。
你能帮我一下吗?提前致谢!
编辑:我忘了说,我的文件是这样的:“09 - 回家之路 - Amy MacDonald.flac”;应该更名为“09 - 回家之路 - 艾米麦克唐纳.flac”。请注意在单词中间已经有标题大小写的单词和大写字母。
要使用下面的脚本,您只需要粘贴的能力:)
rename_title.py
chmod u+x rename_title.py
使用要重命名的目录作为参数运行它:
/path/to/rename_title.py <directory/to/rename>
Run Code Online (Sandbox Code Playgroud)/path/to/rename_title.py <directory/to/rename>
Run Code Online (Sandbox Code Playgroud)
例子:
a file > A File
a fiLE.tXT > A File.txt
A folder > A Folder
a folder > A Folder
Run Code Online (Sandbox Code Playgroud)
更复杂,不包括["a", "an", "the", "and", "but", "or", "nor", "at", "by", "for", "from", "in", "into", "of", "off", "on", "onto", "out", "over", "to", "up", "with", "as"]
:
down BY the rIVER for my uncLE To get water.TXT
Run Code Online (Sandbox Code Playgroud)
变成:
Down By the River for My Uncle to Get Water.txt
Run Code Online (Sandbox Code Playgroud)
等等,它只是使所有文件和文件夹(递归)标题大小写,扩展名小写。
编辑:根据歌曲标题的大小写规则,我添加了所有不需要大写的冠词、连词和介词。
归档时间: |
|
查看次数: |
3422 次 |
最近记录: |