2016-08-18 8 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' 

Ie, Endesa 2016-07-12 2016-08-09.pdf

Могу ли я сделать это с однострочника , без необходимости дважды вводить имя файла?

Я попытался

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

, но это не работает.

ответ

1

Просто используйте команду $() без необходимости замены процесса. Это будет выполнено таким образом, что вывод команды будет размещен только после того, как "Endesa":

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

Например, я только что создал файл Endesa1471530429.pdf в моем компьютере, запустив touch "Endesa"$(date "+%s")".pdf".

Поскольку параметр pdftotext является сам файл, который вы можете сэкономить время, сохраняя значение в переменной и использовать его дважды:

mv "$your_file" "Endesa""$(pdftotext -raw "$your_file" - | grep ...)" 
+0

Ах, хорошо! Итак, 'f = abc; mv $ f.pdf "Endesa $ (pdftotext -raw $ f.pdf - ...). pdf" '- ** это работает! ** –

+1

@ Ze'ev yep! Хотя полезно привыкнуть к цитатам, поэтому скажите 'mv '$ f" ... ', на всякий случай имя содержит пробелы. – fedorqui

1

попробовать, как это ; используя переменную

NEWNAME=$(pdftotext....) ; mv abc.pdf "Endesa $NEWNAME"