このファイルのリストがあり、それらをソートして名前を整数値でインクリメントしたいのですが、リストが 10 になるまでコードは正常に動作します。Linux の「sort」コマンドは、「10」の最初の「1」を解釈し、次のように考えます。これは 9 より小さい数です。これを機能させる方法はありますか?
これは、フォルダーをループしてファイル名をインクリメントするために作成したコードです。
#!/bin/bash
#set -x
ROOT=~/testing/
FILE_COUNT=$(ls -1 $ROOT | wc -l | awk '{print $1}')
COUNT=5
if [[ ${FILE_COUNT} -eq $COUNT ]]; then
echo $COUNT backup files are there
FILE_LIST=$(ls -1 $ROOT | sort -n -r)
for file in $FILE_LIST; do
echo $file
file_new=`basename $file .zip`
if [[ -e $ROOT$file ]]; then
#mv $ROOT$file $ROOT${file_new%?}$COUNT.zip
FILENUM=${file_new:${#file_new}-1}
#echo "This is file # $FILENUM" next one is $(( FILENUM + 1 ))
echo mv $ROOT$file $ROOT${file_new%?}$(( FILENUM + 1 )).zip
mv $ROOT$file $ROOT${file_new%?}$(( FILENUM + 1 )).zip
fi
((COUNT--))
done
else
echo Not $COUNT files, there are $FILE_COUNT
COUNT=$FILE_COUNT
fi
そして、これらは並べ替え行の結果です。
macbookair:~ ilium007$ ls -l testing/ | sort -n -r -t "_"
total 40
-rw-r--r-- 1 ilium007 staff 15 16 Nov 21:24 backup_9.zip
-rw-r--r-- 1 ilium007 staff 15 16 Nov 21:24 backup_8.zip
-rw-r--r-- 1 ilium007 staff 15 16 Nov 21:24 backup_7.zip
-rw-r--r-- 1 ilium007 staff 15 16 Nov 21:24 backup_6.zip
-rw-r--r-- 1 ilium007 staff 15 16 Nov 21:24 backup_10.zip
このファイルのリストを作成するにはどうすればよいですか:
backup_10.zip
backup_9.zip
backup_8.zip
backup_7.zip
backup_6.zip
どんな助けでも感謝します。