一次批量文件改名经历

通常我们批量文件改名很容易想到

for i in `ls`;
do
mv "$old" "$new"
done

但是当文件名中包含了空的时候,默认以空格分隔,直接用上述方法就会有问题:
$ ls
'张学友 - 一千个伤心的理由11.flac'  '张学友 - 分手总要在雨天11.flac'  

OK,我们先打印出来看下

steven.wang@steven MINGW64 ~/Pictures/mp3/temp
$ for i in `ls`;do echo $i;echo "==========";done
张学友
==========
-
==========
一千个伤心的理由11.flac
==========
张学友
==========

.....

发现并非我们所想。所以我们必须解决默认空格的问题,不要使用ls,直接使用for file in ./temp/*; 利用basename以及管道组合获取后缀,然后根据替换新旧filename的编写脚本

for file in ./temp/*; do
  if [[ -f $file ]]; then
    extension=$(basename "$file" | grep -o '\.[^.]*$')
    # 使用mv命令重命名文件,并替换文件名中的旧字符串
    #mv "$file" "${file//'1.flac'/'1.flac'}"
    mv "$file" "${file//$extension/'1'$extension}"
  fi
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值