フォルダ/サブフォルダで.txt、.csvファイルを見つけ、別のパスにソースパスフォルダを再作成し、ファイルをコピーするシェルスクリプト

フォルダ/サブフォルダで.txt、.csvファイルを見つけ、別のパスにソースパスフォルダを再作成し、ファイルをコピーするシェルスクリプト

検索するシェルスクリプトを探しています。".txt"、".csv"複数の再帰フォルダ/サブフォルダのファイルをコピーし、同じフォルダパスを再作成してこれらのファイルを新しいパスにコピーします。

例:多くの親フォルダとサブフォルダに約20,000個のファイルが保存されています。

ソース: u01/temp/proj/sales/john/.csv、.xlsファイル
u01/temp/proj/sales/mike/.txt, .csv, .xls ファイル
u01/temp/proj/sales/geebee/sale/.csv、.xlsファイル

コピーにはシェルスクリプトが必要です。「.txt」、「.csv」のみファイル(xlsや他のファイルを除く)をコピーし、同じフォルダパスを再作成し、次のように上記のファイルをコピーします。

u01/perm/プロジェクト/販売/ゾーン/.csvファイル
u01/perm/proj/sales/mike/.txt, .csvファイル
u01/perm/proj/sales/geebee/sale/.csv文書

ありがとうございます。

答え1

これにはrsyncを使用できます。ソースディレクトリから.txtファイルと.csvファイルのみを希望する場合は、そのファイルと関連ディレクトリ構造のみをコピー先にコピーできます。

たとえば、

rsync -av --include="*/" --include="*.csv" --include="*.txt"  --exclude="*" u01/temp/ u01/perm/

逆の操作を実行し、「.json」および「.xlsx」を除くすべてのファイルをコピーするなどの操作を実行するには、次のようにコマンド呼び出しで「--exclude」を使用できます。
rsync -avz --exclude="*.json" --exclude="*.xls" --exclude="*.xlsx" u01/temp/ u01/perm/

関連情報