Linux 是否使用excel工作表中的文件名复制和重命名新文件?

Linux 是否使用excel工作表中的文件名复制和重命名新文件?,linux,excel,batch-file,sed,Linux,Excel,Batch File,Sed,我必须为我的工作创建大约40多份员工评估表(我有表格的excel模板),并且我在excel表格中列出了他们的姓名 我想知道/希望是否有一种方法可以自动化复制模板的过程,然后在excel中根据员工的姓名重命名模板,并将新文件放在一个名为员工的文件夹中 我也可以使用linux或windows来实现这一点。我觉得应该有一些SED表达式来为我处理这个问题。我认为这将是使用awk最简单的方法。当然,您必须另存为文本文件 $ ls copy.awk names name.skel $ cat copy.

我必须为我的工作创建大约40多份员工评估表(我有表格的excel模板),并且我在excel表格中列出了他们的姓名

我想知道/希望是否有一种方法可以自动化复制模板的过程,然后在excel中根据员工的姓名重命名模板,并将新文件放在一个名为员工的文件夹中


我也可以使用linux或windows来实现这一点。我觉得应该有一些SED表达式来为我处理这个问题。

我认为这将是使用
awk
最简单的方法。当然,您必须另存为文本文件

$ ls
copy.awk  names  name.skel
$ cat copy.awk 
#!/usr/bin/awk -f

BEGIN { skeleton = "name.skel" }

{ system("cp '" skeleton "' '" $1 "_" $2 ".eval'") }

$ cat name.skel 
skeleton
$ cat names
last first junk
rugbert user
$ awk -f copy.awk names
$ ls
copy.awk  last_first.eval  names  name.skel  rugbert_user.eval
$ cat last_first.eval 
skeleton
$ cat rugbert_user.eval 
skeleton
或者,减少到一个班轮:

awk '{system("cp \'name.skel\' \'" $1 "_" $2 ".eval\'")}' names
这假设您希望将它们命名为
lastname\u firstname.eval
,列为
lastname firstname…
;显然,根据需要更改名称和编号。 如果使用csv,则需要添加
-F,

  • 编写一个新文件,
    employees.txt
    ,将每个员工的名字都放在新行上。希望这不是问题,因为大约有40名员工。我确信有一个宏可以自动完成这个过程
  • 在linux中,为了安全起见,执行
    dos2unix employees.txt
  • 将模板
    template.xls
    复制到
    employees.txt
    dir,
    employeesDir
  • 在linux中执行此脚本:

    cd employeesDir;
    employees=`cat employees.txt`;
    for e in $employees; do 
       mkdir $e; 
       cp template.xls 
       $e/$e.xls; 
    done;
    

  • 到目前为止,您尝试了什么?如果您有一个包含所有名称的工作表,您可以执行文件另存为,并使用.txt扩展名将输出文件类型更改为tab delimted text。然后编写一个循环来进行文件处理应该很简单。祝你好运。此解决方案假定名称中没有空格。您可以在读取e时使用
    消除该问题;做完成
    (并将所有
    $e
    转换为
    “$e”
    。祝大家好运!