数字の付いたファイルを順番に対応する 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

関連情報