依序將帶有數字的檔案重新命名為對應的 1-n 數字

依序將帶有數字的檔案重新命名為對應的 1-n 數字

所以我在一個資料夾中有一堆文件,其中前導數字代表文件的順序,但它們不是通常的 1-n,如下所示:

2-file.txt
4-file.txt
7-file.txt
12-file.txt

我想讓它們按從 1 到“文件數”的順序排列,保留數字順序,所以:

1-file.txt
2-file.txt
3-file.txt
4-file.txt

其中 1-file.txt 是前一個 2-file.txt,2-file.txt 是前一個 4-file.txt,依此類推

答案1

這個腳本應該可以為您完成這項工作。請務必將其從 DEBUG 切換到 LIVE :

#!/bin/sh

list=`ls *-file.txt | sort -n`

i=1
for f in $list
do
    #DEBUG MODE
    echo "mv $f $i-file.txt"
    #LIVE MODE
    #mv $f $i-file.txt
    i=$(($i + 1))
done

這是一個沒有硬編碼擴充的版本:

#!/bin/sh

if [ -z $1 ]
then
    echo "
You need to pass a prefix. For example:
 ${0##*/} -file.txt
"
    exit 1
fi

list=`ls *${1} | sort -n`

i=1
for f in $list
do
    #DEBUG MODE
    echo "mv $f ${i}${1}"
    #LIVE MODE
    #mv $f ${i}${1}
    i=$(($i + 1))
done

相關內容