以下脚本删除破折号字符发现在当前目录(递归)中的所有文件,并替换破折号 - 字符转换为下划线字符文件名脚本重命名文件 - 从Android的资源文件
find . -type f -name '*.png' | while read FILE ; do
newfile="$(echo ${FILE} |sed -e 's/-/_/g')";
mv "${FILE}" "${newfile}" ;
done
给出一个文件包含破折号的路径(例如,drawable-hdpi/file-name.png
),脚本会尝试将其重命名为drawable_hdpi/file_name.png
- 替换目录名称中的破折号以及文件名中的破折号。
我想避免修改目录路径,只重写文件名。
有关如何修改sed
用法以跳过目录路径的任何建议?
使用小写变量名称以避免与环境变量的潜在冲突是一个很好的做法......请参阅https://unix.stackexchange.com/questions/321697/why-is-looping-over-finds-输出不良练习 – Sundeep
取决于你的'find'版本和基于'rename'命令的可用性,你可以'find。 -type'fname'* .png'-exec rename -n's | [^ /] + $ | $&=〜s/-/_/gr | e'{} +'并且移除干运行' - n'选项,一旦你看到该命令按预期工作 – Sundeep
@Sundeep在osx上运行,它没有重命名,所以我依赖于mv – aviran