フォルダからファイルをコピーし、新しいファイル名にmd5sumを追加するスクリプト

フォルダからファイルをコピーし、新しいファイル名にmd5sumを追加するスクリプト

これが可能かどうか知りたいです。

.mov私のフォルダにファイルが多すぎます。ファイルを別のフォルダにコピーできますが、新しいファイル名に実際の名前の後に、ファイル拡張子の前にmd5sumを含めることができるかどうか疑問に思います。たとえば、ファイルの1つの名前が指定されている場合は、johnnycash.mov次のように表示したいとします。 johnnycash_8cbda72b2ce62f4a69a0b454ccccbe4.mov

私は愚かな奴であり、この種のことは私のレベルよりわずかに高くなるかもしれませんが、誰もがうまくいく解決策があれば感謝します。

乾杯!

答え1

この問題は、次の2つの手順で解決するのが最善です。

  1. 新しいフォルダにファイルをコピーする
  2. md5sumに基づいて名前を変更します。

ステップ1は簡単です。

cp -r folder_with_movs new_folder

ステップ2にはいくつかのスクリプトが必要です。

cd new_folder
for i in *.mov; do
    bn="${i%.*}"
    ext="${i##*.}"
    md5=$(md5sum "$i" | awk '{ print $1 }')
    mv -v "$i" "${bn}_${md5}.${ext}"
done

答え2

拡張子「.mov」しかないので、すべての可能な拡張子をキャプチャするよりも簡単です。

for file in *.mov; do
 SUM=$(md5sum "$file" | awk '{print $1}')
 cp "$file" <destination>/$(echo "$file" | sed -e "s/.mov/_${SUM}.mov/")
done

すべてのmovファイルを繰り返します。

md5sumを計算し、出力から最初の列のみを取得します。 (このawkステートメントは常に便利です。今見たことがあるでしょう。)

いくつかの名前を変更してファイルを新しいターゲットにコピーします。 sed は、サフィックス ".mov" を文字列 "_"、md5sum、拡張子 ".mov" に置き換えて保存されます。

ファイル名にスペースが含まれていることに注意してください。スペースを避けるのが最善です。

答え3

同様のことがうまくいくかもしれません。非常に粗雑ですが、ファイル名にmd5sumを使用してエントリを移動します。

#!/bin/bash

CURRENTDIRECTORY=xxx
NEWDIRECTORY=xxx

for i in `ls $CURRENTDIRECTORY`; do
    if [ -f $i ]; then
        md5=`md5sum $i | awk '{print $1}'`
        name=$md5-$i
        cp $i $NEWDIRECTORY/$name
    fi
done

関連情報