複数のファイル形式を含むディレクトリツリーがあり、このディレクトリを1つのファイル形式のみを含む同じディレクトリ構造に分割したいと思います。
最良のアプローチは何ですか?
例: 前
dir1 -- dir2 foo.jpg
dir3 foo.mpg
後ろに
foo_jpg -- dir1 -- dir2 foo.jpg
dir3
foo_mpg -- dir1 -- dir2
dir3 foo.mpg
答え1
まず、ハードリンクを使用して速度を上げ、多くのディスク容量を消費しないように、2つのツリーコピーを作成します。
mkdir foo_jpg foo_mpg
cp -al dir1 foo_jpg
cp -al dir1 foo_mpg
次に、ツリーから不要なアイテムを削除します。
find foo_jpg -type f ! -name '*.jpg' -delete
find foo_mpg -type f ! -name '*.mpg' -delete
ディレクトリ構造と要求されたファイルのみを含む2つのツリーがあります。元のツリーを削除するオプションがあります。
答え2
私はこの答えを見つけました:
rsync --recursive --include='*.jpg' --filter='-! */' '/dir1' '/foo_jpg/'