linux给文件批量改名字

有一批文件,都以_mig结尾,怎么把这个结尾去掉哇,求高手指教

#!/bin/bash

for file in `ls |grep .*_mig`
do
target=$(echo $file|awk -F_mig '{print $1}')
cp $file $target
done

执行上面这个脚本,可以把当前目录下以_mig结尾的文件复制一个(去掉_mig)。如果你不要原来的文件,把cp改为mv。
这个脚本有个问题,就是说源文件名中只能有一个_mig,比如如果有134_mig_13_mig这样的文件,那么结果是被改为134。如果你的文件中不存在这种情况,就可以忽略。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-17

这个用脚本了。新建一个 changename.sh 脚本

#!/bin/bash
for file in `ls /tmp/* | grep _mig`
do 
filename=${file%_*}
mv $file $filename
done


里面ls命令后面的目录你自己改。接着执行这个脚本。

#sh  changename.sh

第2个回答  2014-03-17

rename _mig '' *_mig

ls | xargs -t -i mv {} {}_mig
相似回答