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

Ubuntu 如何用AWK重命名一堆文件?,ubuntu,awk,Ubuntu,Awk,我是Ubuntu新手,我有一个小问题:我有很多文件,我想根据另一个文件names.txt中的每一行文本重命名它们。如何使用AWK实现这一点 我要重命名的文件 file1.html file2.html file3.html file4.html 文件结构names.txt Moscow Kosice Warsaw Budapest 最终结果 Moscow.html Kosice.html Warsaw.html Budapest.html 文件names.txt与我要重命名的所有其他文件

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

我要重命名的文件

file1.html
file2.html
file3.html
file4.html
文件结构names.txt

Moscow
Kosice
Warsaw 
Budapest
最终结果

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

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

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


注意。如果要重命名带有空格的文件,此选项将中断。在这种情况下,你需要稍微改变这一行

对不起,这不是StackOverflow的工作方式。形式为“我想做X,请给我提示和/或示例代码”的问题被认为是离题的。请访问并阅读,特别是阅读awk是一个用于操纵文本的工具。shell是一种用于操作(创建/销毁/移动)文件和进程的工具,它有一种专门设计用于操作(创建/销毁/移动)文件和进程的语言,以及对其他工具的顺序调用。因此,重命名文件不是awk的工作,而是shell的工作。