フォルダー内にはたくさんのファイルがあり、先頭の数字はファイルの順序を表していますが、次のように通常の 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