ターミナルでファイルを検索してコピーする

ターミナルでファイルを検索してコピーする

パスを含むファイル名のリストを含む .txt ファイル (list.txt という名前) があります。例:

/Users/Me/Downloads/0001.pdf
/Users/Me/Downloads/0010.pdf
/Users/Me/Downloads/0053.pdf
など。

これらをデスクトップ上の「new-folder」というフォルダにコピーしたいのですが、そのためにはターミナルで次のスクリプトを使用します。

cp `cat /Users/Me/Desktop/list.txt` /Users/Me/Desktop/new-folder/

これは見事に機能します!
しかし、今度はこの機能を拡張したいと思います。
まず、パスにスペースが含まれていると機能しないため、あまり実用的
ではありません。 次に、パスが常にわかるわけではありません。 ターミナルで、特定のフォルダーとそのサブフォルダーで「0001.pdf」というファイルを検索したいと思います。

皆さんに知っておいていただきたいのですが、私のターミナルに関する知識はこの 1 つのスクリプトにほぼ限定されています。
どなたか助けていただければ幸いです。よろしくお願いします。

答え1

xargs各行を引用するには を使用します。

xargs -a list.txt -I% cp "%" destination/

2 番目の要件はあまり実用的ではありませんが、リストが単なるファイル名のリストであると仮定すると、次のようなものが機能する可能性があります。

xargs -a list.txt -L1 -I% find -name "%" -exec cp {} destination/ \; -quit

後続の行を に渡し、findその名前の最初のファイル (現在のディレクトリで再帰的に) を見つけてコピーします。

関連情報