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


0

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行でこれを行う方法を見つけたいです。

回答:


2

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

pdfunite handout??.pdf

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


1

「カチカチ」という文字を使ってそれを行うことができます(ティルダの上のもの)。次のようなものを試してください:

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

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

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

本当です。しかしls、これを使用することは本当に一般的ですが、悪です。lsの出力が一貫しているという保証はありません。多くの場合、エイリアスです。Find otohは一貫しています。
ヘネス

本当だ。しかし、私は彼の最初の試みを使用して答えを提供したかったので、使用しませんでしたfind
ラッセルUhl

1
ああ、それはOPにとって良い答えです。最終的にこれを読む他のすべての人々のためにそれを述べたかっただけです。
ヘネス

0

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

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


これはpdfuniteを一度だけ実行されるという保証はありません
Random832

@ Random832申し訳ありませんが、質問を読み間違えました。はい、これにより、各pdfファイルに対してpdfuniteが実行されます。
ラーウル

@ Random832 質問に合わせて回答を編集しました。それを指摘してくれてありがとう。
ラーウル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.