GNU/Linux >> Linux の 問題 >  >> Linux

FIND の結果を COPY コマンド CP にパイプすることは可能ですか?

cp にはあまり使われないオプションがあります :-t destination -- man ページを参照してください:

find . -iname "*.SomeExt" | xargs cp -t Directory

| を使用できます 以下のように:

find . -iname "*.SomeExt" | while read line
do
  cp $line DestDir/
done

質問への回答:

  • | この問題を解決するために使用できます。しかし、上で見たように、それには多くのコードが含まれます。しかも | find 用の 2 つのプロセスを作成します。 もう 1 つは cp 用です .

  • 代わりに exec() を使用します find 内 単一のプロセスで問題を解決します。


良い質問です!

<ブロック引用> <オール>
  • どうして使えないの |パイプ?そのためではないですか?
  • もちろん、xargs をパイプすることもできます

    find . -iname "*.SomeExt" | xargs cp Destination_Directory/
    
    <ブロック引用>
    1. 誰もが -exec を推奨する理由

    -exec 実行していることを正確に制御できるため、優れています。パイプを使用するたびに、まれなケースで問題が発生する可能性があります:スペースや改行を含むファイル名など。

    <ブロック引用>
    1. パイプで (exec) を使用するタイミングを知るにはどうすればよいですか | ?

    それは本当にあなた次第であり、多くの場合があります。 -exec を使用します 実行するアクションが単純な場合はいつでも。私は xargs とはあまり仲が良くありません 、私は find のアプローチを好む傾向があります 出力は while に提供されます 次のようなループ:

    while IFS= read -r result
    do
        # do things with "$result"
    done < <(find ...)
    

    Linux
    1. Linuxcpコマンド

    2. Linux の find コマンドを使用してファイルを検索する方法

    3. Linux の「検索」コマンドのガイド

    1. コマンドラインからWordPressのバージョンを見つける

    2. Linux で「find」の結果を mv にパイプする方法

    3. パイプの反対側にあるプロセスを見つける

    1. Linuxでのコマンドまたはプロセスの実行時間を検索する

    2. findコマンドを使用して権限を監査する方法

    3. 正しい find -exec 構文は何ですか