これが可能かどうか知りたいです。
.mov
私のフォルダにファイルが多すぎます。ファイルを別のフォルダにコピーできますが、新しいファイル名に実際の名前の後に、ファイル拡張子の前にmd5sumを含めることができるかどうか疑問に思います。たとえば、ファイルの1つの名前が指定されている場合は、johnnycash.mov
次のように表示したいとします。
johnnycash_8cbda72b2ce62f4a69a0b454ccccbe4.mov
私は愚かな奴であり、この種のことは私のレベルよりわずかに高くなるかもしれませんが、誰もがうまくいく解決策があれば感謝します。
乾杯!
答え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