ls/grepの出力をpdfuniteの入力として使用するにはどうすればいいですか

ls/grepの出力をpdfuniteの入力として使用するにはどうすればいいですか

pdfunite を使用して、複数の pdf ファイルを 1 つの出力ファイルに結合したいと考えています。ディレクトリにはさまざまなものが含まれているため、ls/grep を使用して適切なファイル名を取得し、pdfunite を使用して結合できると考えました。ls/grep の出力は次のようになります。

ls | grep "handout...pdf" 
handout01.pdf*
handout02.pdf*
handout03.pdf*
handout04.pdf*
handout05.pdf*
handout06.pdf*

次に、次の構文を持つ pdfunit を呼び出します。

 pdfunite [options] PDF-sourcefile1..PDF-sourcefilen PDF-destfile

私の問題は、ls/grep の出力を pdfunite にパイプできないように見えることです。これは、そのように動作することが想定されていないためです。一方、次のように試すと、

pdfunite ls | grep "handout...pdf" grep.pdf

すると、grep は明らかに私が選択した出力ファイルについて文句を言います:

grep: grep.pdf: No such file or directory

2 つの別々の手順を実行すれば機能することはわかっていますが、これを 1 行で実行する方法を理解したいと思います。

答え1

ファイル パターンがそれほど単純な場合は、正規表現は必要なく、単純なワイルドカードを使用できます。

pdfunite handout??.pdf

それ以外の場合は、コマンドと -regex を使用して正規表現を使用できますfindが、複数のファイル グループに分割される可能性のない実行方法は見つかりませんでした。実行方法の中には、ファイル名にスペースが含まれていないことが条件となるものもあります。

答え2

「ティック」文字 (チルダの上にあるもの) を使用すると、それができると思います。次のようにしてみてください。

pdfunite [options] `ls | grep "handout...pdf"`

私の理解では、これがコマンドをネストする方法です。ティック内のものはすべて独自のコマンドとして実行され、その出力がティックを置き換えます。したがって、上記のコマンドは基本的に次のようになります。

pdfunite [options] handout01.pdf* handout02.pdf* ...

答え3

必ずしも grep は必要ありません。パターンを に渡すことができますls

pdfunite $(ls handout*.pdf*) merged.pdf

関連情報