我需要一些命令行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 –