その中に多くのサブフォルダがあるディレクトリがあり、サブフォルダの下に他のサブフォルダがあります。すべてのディレクトリとサブディレクトリを別の場所にコピーし、階層を維持しながら、このディレクトリに特定の名前のファイルのみをコピーしたいと思います。
すべてのディレクトリとサブディレクトリがコピーされたと仮定すると、そのディレクトリに拡張子を持つファイルがある場合、.txt
そのファイルもコピーされます。
Unix / Linuxシステムでこれを行う最善の方法は何ですか?
ベストアンサー1
使用rsync
:
rsync -a --include='*/' --include='*.txt' --exclude='*' source_dir/ target_dir
source_dir
これにより、コピーされたファイルと名前が一致するファイルをtarget_dir
含むディレクトリ階層のコピーが作成されます。*.txt
--include
オプションは、--exclude
「wins」という名前に一致する最初のパターンを使用して左から右に処理されます。ここでこれらのオプションを使用すると、すべてのディレクトリに一致する名前が処理されますが、*.txt
他のすべては無視されます。
-a
()オプションを使用する--archive
と、source_dir
階層が再帰的に処理され、できるだけ多くのファイルメタデータがコピーに保存されます(rsync
詳細についてはドキュメントを参照)。