指定したサブディレクトリの特定のファイルを別のサブディレクトリにコピーします。

指定したサブディレクトリの特定のファイルを別のサブディレクトリにコピーします。

「_CSF」で終わるすべてのサブディレクトリのすべての.fastqファイルを別の作成されたサブディレクトリであるdir1_CSFにコピーしたいと思います。

特定のファイルをコピーする方法は理解していますが、特定のディレクトリからコピーする方法はわかりません。

私はシェルスクリプトに初めて触れたので、助けはとても役に立ちます。

答え1

シェルを使用すると、次のことができます。

find *_CSF -type f -iname "*.fastq" -exec cp {} dir1_CSF/ \;

答え2

DIR を最上位ディレクトリに設定し、TARGET を宛先ディレクトリに設定します。次に、次を実行します。

find $DIR \( -type d -name "$TARGET" -prune \) -o \
\( -type f -name "*.fastq" -exec cp -t "$TARGET" {}  + \)

はい、それは順序です。これは、GNU find と GNU fileutils がこれらの場合にcp便利な引数を提供すると仮定します。-t

どのように動作しますか?

(設定どおり)で始まるコマンドは、拡張子と一致するすべてのファイルを探します(ディレクトリfindの下のファイルを除く)。次に、これらすべてのファイル名をプログラムに渡します。$DIR$TARGETcp

関連情報