0

フォルダ内のすべてのファイルの名前を変更し、新しいファイル拡張子を付ける必要があります。bashでファイルの名前を変更する方法を知っています。私が抱えている問題は、名前を次のように変更する必要があることです。

file.01 file.02 file.03見つかったすべてのファイルをカウントアップします。

誰かが私にどこから始めるべきかの例を教えてもらえますか?

これは私が必要なものです:

md5sum * | sed 's/^\(\w*\)\s*\(.*\)/\2 \1/' | while read LINE; do
   mv $LINE
done

しかし、それはそれに行く拡張file.01 file.02 file.03などを与えません。

4

2 に答える 2

2

要件を文字通り読むと...

counter=0
for file in *; do
  read sum _ <<<"$(md5sum "$file")"
  printf -v file_new "%s.%02d" "$sum" "$counter"
  mv -- "$file" "$file_new"
  (( counter++ ))
done

これは、md5sum の出力からファイル名を読み取るよりも効率的ではありませんが、グロビングは通常とは異なる名前 (改行、特殊文字など) を持つファイルを安全に処理するため、信頼性は高くなります。

于 2013-01-21T17:53:59.083 に答える
0

これに何かが並んでいます:

i=0
for f in *
do
   if [ -f $f ]; then 
     i=`expr $i + 1` 
     if [ $i -lt 10 ]; then 
       i=0$i
     fi
     sum=`md5sum $f | cut -d ' ' -f 1` 
     mv $f $sum.$i 
   fi
done
于 2013-01-21T20:28:32.347 に答える