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

时间:2019-04-16 12:28:09

标签: ubuntu awk

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

我要重命名的文件

set_expiry(value)

文件 names.txt

的结构
file1.html
file2.html
file3.html
file4.html

最终结果

Moscow
Kosice
Warsaw 
Budapest

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

1 个答案:

答案 0 :(得分:-2)

awk可以帮助您获取所需的shell命令,但仅使用awk不能做到这一点:

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

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

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

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