用于重命名文件的脚本 - 从 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用法以跳过目录路径的任何建议?

shell 有一些漂亮的字符串运算符来切碎部分变量。您的 shell 手册页包含所有详细信息。以下是我如何使用它们:

find . -type f -name '*.png' |
while read FILE; do
dir=${FILE%/*}
newfile=$(echo "${FILE##*/}" |sed -e 's/-/_/g')
mv "${FILE}" "${dir}/${newfile}"
done

解释:

dir=${FILE%/*}从右边切掉与/*glob匹配的最短部分,删除斜杠和文件名,给出目录。

${FILE##*/}从左匹配*/中删除最长的部分,即只留下文件名。

最新更新