
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