このコマンドの出力find /home -name *.pdf
を使用して、検索結果のファイルを別のディレクトリに移動します。パイプで。どうやってやるの?
パイプを使用する必要はなく、xargs
の引数としてファイル名を作成するためにmv
も必要ありません。
mv
の-exec
アクション内でfind
を使用するだけです。
find /home -type f -name '*.pdf' -exec mv -t /destination {} +
/destination
を実際の宛先ディレクトリに置き換えますfind
はすべての可能なファイル名を処理しますfind
は、ARG_MAX
をトリガーしないように、一度にできるだけ多くのファイル名を渡すことでARG_MAX
を処理します-type f
を追加して検索ベクトルを制限します。'*.pdf'
をクォートして、find
がそれらを処理するため、シェルが事前に展開しないようにします何らかの奇妙な理由、または学習目的で、pipe -xargs
を使用する必要がある場合:
find /home -type f -name '*.pdf' -print0 | xargs -0 mv -t /destination
PDFの名前にスペースがない場合、別の方法は、ターミナルでこのコマンドを実行することです。
mv $(find /home -type f -name '*.pdf') ./destination
$()
は、コマンド実行(find /home -type f -name '*.pdf'
)からの出力をその外部のコマンド(mv [...] ./destination
)に適用します。