假设,我有一个名为的目录Titlepage
,其中有许多名为titlepage_1.pdf
, titlepage_2.pdf
...的文件titlepage_n.pdf
以及它们的tex
文件。我有一个 bash 函数可以更改两个文件名。(例如$alterpdf 2 3
,此命令将文件名交换titlepage_2.pdf
为titlepage_3.pdf
. 并对相应的文件执行相同的tex
操作。)
function swap(){ mv $1 $1._tmp && mv $2 $1 && mv $1._tmp $2; }
function alterpdf(){ swap titlepage_$1.pdf titlepage_$2.pdf; swap titlepage_$1.tex titlepage_$2.tex; }
现在,我想要一个函数(例如, ),它可以在内部filepush new.pdf 2 3
插入并带有名称。并且下一个文件的数量会增加。到到等等。 new.pdf
titlepage_2.pdf
titlepage_3.pdf
titlepage_3.pdf
titlepage_3.pdf
titlepage_4.pdf
titlepage_4.pdf
titlepage_5.pdf
该目录中还有一个.tex
用于所有 pdf 的文件。
编辑
我想实现以下 -
Titlepage$ ls
titlepage_1.tex titlepage_1.pdf titlepage_2.tex titlepage_2.pdf titlepage_3.tex titlepage_3.pdf
Titlepage$ vim new.tex
Titlepage$ pdflatex new.tex
Titlepage$ ls
new.pdf new.tex titlepage_1.tex titlepage_1.pdf titlepage_2.tex titlepage_2.pdf titlepage_3.tex
titlepage_3.pdf
Titlepage$ push new.pdf 2 3
Titlepage$ ls
titlepage_1.tex titlepage_1.pdf titlepage_2.tex titlepage_2.pdf titlepage_3.tex titlepage_3.pdf titlepage_4.tex titlepage_4.pdf
编辑
建议的解决方案
$ls *.pdf|grep -Eo [0-9]+|sort -n
这会产生文件的索引。从尾部递增每个索引开始,为每个文件添加 1,直到插入点(的第二个参数push
)。然后将目标文件(new.pdf
)重命名为titlepage_3rd_argement_of_push.pdf
好的,这是一个执行您想要的操作的脚本。
所以澄清一下,您希望能够将 new.pdf 夹在两个 titlepage 文件之间,并生成一个新文件 titlepage_3.pdf,并将原始 titlepage_3.pdf 移动到 titlepage_4.pdf,并增加剩余的具有相似名称的 pdf 文件?
换句话说,我们希望留下一个新列表,其中新的 titlepage_3.pdf 现在包含 titlepage_2.pdf 中的页面,然后是 new.pdf 中的页面,然后是 titlepage_3.pdf 中的页面?有几种方法可以连接您可以用于此的pdf 。为了增加数字,我建议在连接步骤之前使用 perl 样式的正则表达式和
rename
命令来执行此操作。对于 .tex 文件,我不确定您到底要完成什么,但此链接可能包含有关如何连接 tex 文件的有用信息。