だから、私は19.04サーバーで次のスクリプトを使用して、たくさんのビデオファイルをプレフィックスの付いたフォルダーに移動しようとしました。
dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
shopt -s nocasematch
for file in *
do
for dir in "${dirs[@]}"
do
if [ -d "$file" ]; then
echo 'this is a dir, skipping'
break
else
if [[ $file =~ ^[$dir] ]]; then
echo "----> $file moves into -> $dir <----"
mv "$file" "$dir"
break
fi
fi
done
done
どこでうまくいかなかったかはわかりませんが、ファイルをフォルダに移動する代わりに、単一の出力に行きました。
----> a1.ts moves into -> A <----
----> a2.ts moves into -> A <----
----> a3.ts moves into -> A <----
----> a4.ts moves into -> A <----
----> a5.ts moves into -> A <----
----> c1.ts moves into -> C <----
----> c2.ts moves into -> C <----
----> c3.ts moves into -> C <----
----> c4.ts moves into -> C <----
----> c5.ts moves into -> C <----
幸いなことに、プロセスが意図したとおりに行われず、フォルダー全体を処理しなかったことに気付いた時点で、プロセス(CTRL + C)を停止しました。
だから今、私はそれらのファイルAとを手に入れました。これらCはGb未満で、その見た目では1つのビデオです。
フォルダー自体の合計ディスク使用量には50Gbが含まれていますが、コンピューターの全体的なディスク領域は同じままです。ファイルが削除されていないと思わせますか?
どんな助けも感謝します、ありがとう:)
編集:ファイルは実際にはなくなり、最後に書き込まれるファイルのみが残ります。ディスク使用情報が更新されるまでに少し時間がかかりました。
mv "$file" "$dir/"し、末尾に/; $dir存在しない場合はmv、名前$fileを変更する代わりにエラーになります$dir。とも検討mv -iしてくださいmv -n。そしてmkdir -p、適切な措置のために、常に移動する前に行動してください。
A、Bというようにスクリプトを実行する前に存在していましたか?そうでない場合は、ファイルの名前を変更します。名前がで始まるaか、名前Aがに変更されたすべてのファイルAは、最後に名前が変更されたファイルのみが生き残り、他は上書きされます。変数を呼び出すdirことはディレクトリを作成しません!