使用名称列表重命名多个文件

使用名称列表重命名多个文件

我正在尝试根据名称列表重命名多个编号的文件。

例子:

1.pdf, 2.pdf, …, n.pdf

还有一个名为 的文件names.txt,每行都有一个值:

Fabio
Joao
n-name

所以我们会有

  • 1.pdfFabio.pdf
  • 2.pdfJoao.pdf
  • n.pdfn-name.pdf

关于如何实现这一目标有什么想法吗?

答案1

如果文件实际上只是“lineNumber.pdf”,那么这很容易做到。在外壳中:

c=0
while IFS= read -r name; do
    ((c++))
    echo mv -- $c.pdf "$name.pdf"
done < names.txt

一旦您确定它按照您的需要工作,请echomv命令中删除 。

如果你有很多文件,你可能需要考虑用 Perl 来完成,这样会快得多:

perl -lne 'rename("$..pdf","$_.pdf")' names.txt 

相关内容