我需要一些命令行fu。ubuntu中批量重命名文件
我有一大堆文件,从4个数字开始,然后是破折号,然后各种字母,然后扩展,例如。
0851_blahblah_p.dbf
0754_asdf_l.dbf
我想要的是将四个数字移动到文件名的末尾(保留扩展名)并删除下划线。因此,上述示例将被重命名为:
blahblah_p0851.dbf
asdf_l0754.dbf
所有帮助表示赞赏。
我正在运行ubuntu。
感谢DJ
我需要一些命令行fu。ubuntu中批量重命名文件
我有一大堆文件,从4个数字开始,然后是破折号,然后各种字母,然后扩展,例如。
0851_blahblah_p.dbf
0754_asdf_l.dbf
我想要的是将四个数字移动到文件名的末尾(保留扩展名)并删除下划线。因此,上述示例将被重命名为:
blahblah_p0851.dbf
asdf_l0754.dbf
所有帮助表示赞赏。
我正在运行ubuntu。
感谢DJ
这里是纯bash
一个解决方案:神经崩溃了意见
for file in *.dbf; do
ext=${file##*.};num=${file%%_*};name=${file%.*};name=${name#*_}
mv $file $name$num"."$ext;
done
:
for file in *.dbf
do
ext=${file##*.} # Capture the extension
num=${file%%_*} # Capture the number
name=${file%.*} # Step 1: Capture the name
name=${name#*_} # Step 2: Capture the name
mv "$file" "$name$num.$ext" # move the files to new name
done
感谢所有的答复。像魅力一样工作。 – paddleman
可以使用rename
命令:
rename 's/([0-9]{4})_([[:alpha:]]*)_.*.dbf/$2_$1.dbf/' *
您可以使用也
$sed -r 's/([^_]+)_([^.]+)/\2\1/g'
使用这种方式,给定的名称是分裂和修改按您的要求的sed。
(或)
使用这个脚本,并通过文件名作为参数,它会移动的文件名按要求。
#!/bin/sh
if [ $# -ne 1 ] ; then
echo "Usage : <sh filename> <arguments>"
exit ;
fi
for file in $*
do
mv $file `echo $file | sed -r 's/([^_]+)_([^.]+)/\2\1/g' `
done
答案就在这里: http://stackoverflow.com/questions/2759067/rename-files-in-python –