サイズに応じてファイル名を変更する Bash スクリプト

サイズに応じてファイル名を変更する Bash スクリプト

コマンドプロンプトの入力に基づいてフォルダのファイル名を変更するbashスクリプトがあります。

echo "Please rename and press enter" read rename 

if [ -z "$rename" ]; then 
  printf "no caption was selected, aborting!\n"
  exit 1
fi 

printf "rename is $rename\n" count=1

for i in *.jpg; do 
  j=printf "%04d" $count
  j="$rename"$j".jpg"
  count=$((count + 1))
  mv "$i" $j
done  
fi 
shift 
done

フォルダのファイル名がサイズによって変わるように、このスクリプトをどのように変更しますか?

サイズに応じてファイルを並べ替えると、フォルダに次のように表示されます。

a009      978kb
a001      567kb
a003      499kb
a008      432kb

だから、生成されたファイルの名前を変更したいと思います。

a001      978kb
a002      567kb
a003      499kb
a004      432kb

ベストアンサー1

このような:

echo "Please rename and press enter"
read rename 

ls |
  # prepend filename with file size in bytes
  parallel stat -c %s,,sep,,%n --  |
  # sort by number
  sort -n |
  # rename to sequencenumber followed by size in bytes
  parallel -q --colsep ,,sep,, mv {2} "$rename"{#}_{1}

おすすめ記事