Linuxで特定のファイルをコピーするためにfindとcpを結合する方法

Linuxで特定のファイルをコピーするためにfindとcpを結合する方法

Linuxでは、次の問題が発生しました。

ディレクトリ内の特定のファイルを見つけて、このファイル(存在する場合)を別のディレクトリにコピーする必要があります。

これはコマンドです(logという単語で始まる特定のテキストファイルを見つける必要があります)。コマンドが機能する最新の10個のファイルのみをインポートします。

find /mydir -type f -name 'log*.txt' | tail -n 10

再帰は必要ありません。ファイルを見つけてコピーするだけです。

しかし、これをコピーコマンドで使用するのに問題があります。

find /mydir -type f -name 'log*.txt' | tail -n 10 -exec cp --parents \{\} /tmp/mydir \;

-exec を実行できません。ここに問題があります。

ありがとう

ベストアンサー1

xargsすべてのファイルをコピーするために使用します。

cp渡されたすべての引数に対して実行されるxargsに出力をパイプできます。これウィキペディアこの記事では、xargs私ができることよりもよく説明しています。 Linuxのマンページを確認してください。

必要なものを実行する呼び出しは次のとおりです。

find /mydir -type f -name 'log*.txt' | tail -n 10 | xargs -I % cp % /tmp/mydir/

-I次のフラグは、% cp %渡されたすべての引数が最後の引数に連結されることを意味します。%

おすすめ記事