假设我有一个文件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}}
但这不起作用。
答案 0 :(得分: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 ...)"
答案 1 :(得分:1)
简单如下:
mv abd.pdf "Endesa $(pdftotext....)"
答案 2 :(得分:1)
尝试这样;使用变量
NEWNAME=$(pdftotext....) ; mv abc.pdf "Endesa $NEWNAME"