2016-08-18 7 views
0

のは、私がabc.pdfコマンド出力の名前を変更する方法は?

私はEndesaに名前を変更したいファイルがあるとしましょう+このコマンドの出力:

pdftotext -raw abc.pdf - | grep 'Periodo de consumo' | sed -E 's_.*: ([0-9]{2})/([0-9]{2})/([0-9]{4}) a ([0-9]{2})/([0-9]{2})/([0-9]{4})_\3-\2-\1 \6-\5-\4_g' 

すなわち、Endesa 2016-07-12 2016-08-09.pdf

私はワンライナーでこれを行うことができます、ファイルの名前を2回入力する必要はありませんか?

私は

mv abd.pdf < "Endesa "$(pdftotext....) 

を試してみましたが、それは動作しません。

答えて

1

$()でコマンドを実行するだけで、プロセス置換を使用する必要はありません。これは、コマンドの出力がちょうど"Endesa"後に置かれるような方法で実行されます。

mv abc.pdf "Endesa""$(your command)" 

例えば、私はちょうどtouch "Endesa"$(date "+%s")".pdf"を実行して、自分のコンピュータにファイルEndesa1471530429.pdfを作成しました。

pdftotextのパラメータを使用して、変数に値を格納し、それを2回使って、いくつかの時間を節約することができ、ファイルそのものであるので:

mv "$your_file" "Endesa""$(pdftotext -raw "$your_file" - | grep ...)" 
ような単純な
+0

ああ、OK!だから 'f = abc; mv $ f.pdf "Endesa $(pdftotext -raw $ f.pdf - ...).pdf" - **動作します!** –

+1

@ Ze'ev yep!クォートするのは良いですが、 'mv" $ f "..."と言ってください。 – fedorqui

1

mv abd.pdf "Endesa $(pdftotext....)" 
1

はこのようにしてみてください;変数を使用する

NEWNAME=$(pdftotext....) ; mv abc.pdf "Endesa $NEWNAME" 
関連する問題