根据行内容重命名pdf linux

根据行内容重命名pdf linux

我正在尝试根据文件中的特定行重命名一堆 pdf。

到目前为止,我正在将其转换为文本,然后使用 awk 打印第 41 行。但这就是我所能做的。

我尝试使用 xargs 将 awk 输出传递给 mv 命令,但至今没有任何效果。

我知道我可能以错误的方式处理这个问题,但如果能够提供一些启发,我将不胜感激。

我正在尝试不使用 bash 来执行此操作,这样我就可以为其创建别名。

ls *.pdf | xargs -n1 mv `ls *.pdf | xargs -n1 pdftotext; ls page_*.txt | xargs -n1 awk 'NR==41'`.txt'

答案1

您有多种选择。您可以编写一个函数来执行此操作,也可以编写一个 (bash) shell 脚本,您也可以在别名中使用。当然,您可以尝试编写一行代码来实现这个神奇的功能。

我认为命令的结构如下(一行):

for pdf in *.pdf; do pdftotext "${pdf}"; filename=`basename -s .pdf "${pdf}"`; newname=`awk 'NR==41' "${filename}.txt"`; mv "${pdf}" "${newname}"; done;`

可以重组为:

for pdf in *.pdf
do
    pdftotext "${pdf}"
    filename=`basename -s .pdf "${pdf}"`
    newname=`awk 'NR==41' "${filename}.txt"`
    mv "${pdf}" "${newname}"
done

该文件可以保存为 shell 脚本并以您喜欢的任何名称添加到别名列表中。

相关内容