以下命令的任何人會做你的工作
c=0 rename 's/\./sprintf(".%d.",++$ENV{c})/e' *.phy
rename 's/\./".".++$a."."/e' *.phy
rename '$a++; s/\./.$a./e' *.phy
n=1;for f in *.phy; do mv "$f" "${f%.*}.$n.${f##*.}"; n=$((n+1)); done
要麼
它執行perl s///
表達,並從 原來以進行重命名替換字符串。在替換字符串我用 sprintf
格式化的名字,在這裏我使用環境變量c
作爲 計數器
$ touch Ortho234.phy Ortho671.phy Ortho880.phy
$ ls *.phy -1
Ortho234.phy
Ortho671.phy
Ortho880.phy
$ c=0 rename 's/\./sprintf(".%d.",++$ENV{c})/e' *.phy
$ ls *.phy -1
Ortho234.1.phy
Ortho671.2.phy
Ortho880.3.phy
OR
$ touch Ortho234.phy Ortho671.phy Ortho880.phy
$ ls *.phy -1
Ortho234.phy
Ortho671.phy
Ortho880.phy
$ n=1;for f in *.phy; do mv "$f" "${f%.*}.$n.${f##*.}"; n=$((n+1)); done
$ ls *.phy -1
Ortho234.1.phy
Ortho671.2.phy
Ortho880.3.phy
OR
$ touch Ortho234.phy Ortho671.phy Ortho880.phy
$ ls *.phy -1
Ortho234.phy
Ortho671.phy
Ortho880.phy
$ rename 's/\./".".++$a."."/e' *.phy
$ ls *.phy -1
Ortho234.1.phy
Ortho671.2.phy
Ortho880.3.phy
OR
$ touch Ortho234.phy Ortho671.phy Ortho880.phy
$ ls *.phy -1
Ortho234.phy
Ortho671.phy
Ortho880.phy
$ rename '$a++; s/\./.$a./e' *.phy
$ ls *.phy -1
Ortho234.1.phy
Ortho671.2.phy
Ortho880.3.phy
輸入文件'i'是您的文件名和你沒有使用它。 – Arijoon
就我個人而言,我覺得你有一個x <->問題,因爲你沒有通過重命名文件而獲得任何好處,並且最好向你的實際陣列問題尋求幫助。文件仍然與添加新號碼之前的順序相同。 – grail