2016-08-18 2 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

내가 한 라이너와 함께이 작업을 수행 할 수 , 파일 이름을 두 번 입력 할 필요없이?

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

을 시도하지만 작동하지 않습니다.

답변

1

공정 대체를 사용할 필요없이 $()과 함께 명령을 실행하면됩니다. 이것은 명령의 출력이 단지 "Endesa" 후 배치됩니다있는 방법으로 실행됩니다 : 예를 들어

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

난 그냥 touch "Endesa"$(date "+%s")".pdf"를 실행하여 내 컴퓨터에있는 파일 Endesa1471530429.pdf을 만들었습니다. 이 같은 시도

mv abd.pdf "Endesa $(pdftotext....)" 
+0

아, 확인! 그래서'f = abc; mv $ f.pdf "Endesa $ (pdftotext -raw $ f.pdf - ...) .pdf"** - ** 작동합니다! ** –

+1

@ Ze'ev yep! 인용문에 익숙해지는 것이 좋지만, 이름에 공백이 포함될 경우를 대비하여'mv "$ f"... "라고 말하십시오. – fedorqui

1

간단한 같이 pdftotext의 파라미터 이후

파일 자체가 당신이 변수의 값을 저장하고 두 번을 사용하여 시간을 절약 할 수있다 ; 변수 사용

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

:

mv "$your_file" "Endesa""$(pdftotext -raw "$your_file" - | grep ...)" 
관련 문제