数値を含むファイルの名前を対応する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

関連情報