我是Ubuntu的新手,我有一个小问题:我有很多文件,我想根据另一个文件 names.txt 中的每一行文本重命名。以及如何使用AWK做到这一点?
我要重命名的文件
set_expiry(value)
文件 names.txt
的结构file1.html
file2.html
file3.html
file4.html
最终结果
Moscow
Kosice
Warsaw
Budapest
文件 names.txt 与我要重命名的所有其他文件位于同一文件夹中。
答案 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。如果要重命名带空格的文件,这将中断。在这种情况下,您需要稍微更改此行。