別のフォルダに基づいて、1つのフォルダ内のファイルを並べ替えます。

別のフォルダに基づいて、1つのフォルダ内のファイルを並べ替えます。

フォルダが2つあります。フォルダ 1 では、一部のサブフォルダにいくつかのファイルが並べ替えられています。フォルダ2には、ファイル名は同じですが、サイズは異なりますが、サブフォルダにソートされていないファイルがあります。フォルダ2ファイルをフォルダ1のように整理したいです。これを行う簡単な方法はありますか?私はLinuxを使用しています。

答え1

おそらく次のような措置を取ることができます。

cd "$folder1"
echo "mkdir -p " $(find . -type d | tee /tmp/dirs) > /tmp/tmpscript
find . | awk -F"/" 'FNR == NR {DIR[$0]; next} !($0 in DIR) && !(NF == 2) {print "cp \"" $NF "\" \"" $0"\""}' /tmp/dirs - >> /tmp/tmpscript
cd "$folder2"
less /tmp/tmpscript
# rm /tmp/dirs /tmp/tmpscript

cpまず、フォルダ2の下にサブディレクトリ構造を作成し、その中の各ファイルを関連するサブディレクトリに配置する一時スクリプトを作成します。必要に応じてに変更してくださいcp。実際に実行する前に、最初の項目(たとえば)をもう一度mv確認してください。最後のステップとして一時ファイルを削除する必要があります。コピー操作の最適化には努力しません。各ファイルは個別に処理されます。サブディレクトリにバインドされているすべてのファイルを1つのコピーコマンドで収集するなど、改善が可能です。tmpscriptless

関連情報