Ubuntu 如何用AWK重命名一堆文件?
我是Ubuntu新手,我有一个小问题:我有很多文件,我想根据另一个文件names.txt中的每一行文本重命名它们。如何使用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与我要重命名的所有其他文件
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的工作。