如何重命名为命令输出?

时间:2016-08-18 14:26:04

标签: bash mv

假设我有一个文件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}}

但这不起作用。

3 个答案:

答案 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"