Mac Bash find 文件名 替换

整理照片 多个目录下很多照片的文件名中间有-要去掉,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//替换前/替换后}" ' -- {} \;
 
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值