我正在尝试根据文件中的特定行重命名一堆 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 脚本并以您喜欢的任何名称添加到别名列表中。