如何使用AWK重命名一堆文件



我是 Ubuntu 的新手,我有一个小问题:我有很多文件,我想根据另一个文件名中的每一行文本重命名.txt。如何使用 AWK 做到这一点?

我要重命名的文件

file1.html
file2.html
file3.html
file4.html

文件名的结构.txt

Moscow
Kosice
Warsaw 
Budapest

最终结果

Moscow.html
Kosice.html
Warsaw.html
Budapest.html

文件名.txt与我要重命名的所有其他文件位于同一文件夹中。

awk

可以帮助您获取所需的 shell 命令,但仅使用 awk 并不是这样做的方法:

awk 'BEGIN{x=1} {printf "%s.html file%d.htmln", $0, x; x++}' names.txt | xargs -l mv 

在这里awk将处理名称.txt文件,并为每一行创建%s.html file%d.html。其中 %s 是在文件中该行找到的文本,%d 是递增的数字。

接下来,这将传递给 xargs,它将调用每一行(这就是 -l 所做的(将调用 mv 并将该行上的文本作为参数传递。

铌。如果要重命名带有空格的文件,这将中断。在这种情况下,您需要稍微更改此行。

最新更新