gpt4 book ai didi

linux - 使用 Linux 中特定内容行的名称批量重命名 pdf 文件

转载 作者:太空狗 更新时间:2023-10-29 12:10:29 24 4
gpt4 key购买 nike

我有多个要重命名的 pdf 文件。新名称应该取自 pdf 文件的特定(比如说第 5 行)内容。例如,如果文件的第 5 行有内容 some string <-- 这个字符串应该是文件名。其余文件也一样。每个文件都应该用内容的第 5 行重命名。我在终端试过了

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

它复制文件,但名称是无效字符串。我知道系统不会将文件视为纯文本和图像,有元数据、xml 标记等。但是有没有办法从该行获取内容?

最佳答案

开箱即用,bash 及其常用实用程序无法读取 pdf 文件。但是,less 能够从 pdf 文件中恢复文本。您可以按如下方式更改脚本:

for pdf in *.pdf
do
mv "$pdf" "$(less $pdf | sed '5q;d').pdf"
done

解释:

  • less "$pdf" : 显示pdf文件的文本部分。将考虑间距
    • 进行一些测试以查看 less 是否返回所需的输出
  • sed '5q;d' : 提取输入文件的第 5 行

您可以选择使用以下脚本删除空行和超出的空格:

mv "$pdf" "$(less "$pdf" | sed -e '/^\s*$/d' -e 's/ \+/ /g' | sed '5q;d').pdf"

关于linux - 使用 Linux 中特定内容行的名称批量重命名 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46731805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com