したがって、フォルダに複数のファイルがあります。ここで、先頭の数字はファイルの順序を表しますが、次のような一般的な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