Eef*_*ret 3 bash android file-rename drawable android-drawable
我有一些我的设计师创建的资产,他正确地对它们进行了分支,使所有dpi都与它们的目录匹配,所以我很高兴,因为我不必将这些文件复制到每个子文件夹中,但是当我签出它们的名称时,它们的文件名中就有破折号,这导致android编译器失败。
那么,如何使bash脚本将在drawable- *下的所有文件重命名为相同的文件名,但用下划线替换破折号?
例:
转换这个:
drawable-hdpi/
my-icon.png
my-icon-2.png
drawable-xhdpi/
my-icon.png
my-icon-2.png
drawable-xxhdpi/
my-icon.png
my-icon-2.png
Run Code Online (Sandbox Code Playgroud)
对此:
drawable-hdpi/
my_icon.png
my_icon_2.png
drawable-xhdpi/
my_icon.png
my_icon_2.png
drawable-xxhdpi/
my_icon.png
my_icon_2.png
Run Code Online (Sandbox Code Playgroud)
查看Bash FAQ 30,其中详细讨论了该主题以及所提供的示例。
关于您的解决方案:
请注意,按照惯例,环境变量(PATH
,EDITOR
,SHELL
,...)和内部shell变量(BASH_VERSION
,RANDOM
,...)完全资本化。所有其他变量名应小写。由于变量名称区分大小写,因此该约定避免了意外覆盖环境变量和内部变量。
“双引号”包含空格/元字符,每个扩展每个文字:"$var"
,"$(command "$var")"
,"${array[@]}"
,"a & b"
。请参阅
引号,参数和http://wiki.bash-hackers.org/syntax/words。
find /paths/to/drawable/dirs -type f -name '*-*' -print0 \
| while read -rd '' f; do
# File's path.
p="${f%/*}"
# File's base-name.
f1="${f##*/}"
# Lower-cased base-name.
f1="${f1,,}"
# Rename.
echo mv "$f" "$p/${f1//-/_}"
done
Run Code Online (Sandbox Code Playgroud)
注意:该echo
命令是故意存在的,因此您不会意外损坏文件。当您确定它会执行预期的操作时,请将其删除。
归档时间: |
|
查看次数: |
798 次 |
最近记录: |