整理照片 多个目录下很多照片的文件名中间有-要去掉,jpeg替换为jpg,去掉某些字符等等。
如果只在当前目录下,可以这样: 去掉文件名中的 -
for i in *.jpg
do
mv $i ${i//-/};
done
花括号中i后面的//表示替换所有的符合条件的项,如果是/就只替换一次。
但是把空格替换为下划线的时候,报错了,mv的参数后加上引号就正确了。
for i in *.jpg
do
mv “$i” “${i//-/}”;
done
如果一次性递归替换多个目录下所有文件,想可以用find -exec 完成,但是怎么完成搞不定。搜了很多,搞明白了。
最初写成这样:
find . -name *.jpg -exec bash -c 'mv "$1" "${1//替换前/替换后}" ' -- {} \;
报错,研究了下,还是要加引号在-name后面才对:
然后,有人说这样也可以:
<pre name="code" class="plain"><pre name="code" class="plain">find . -name \*.jpg -exec bash -c 'mv "$1" "${1//替换前/替换后}" ' -- {} \;