Linux 是否使用excel工作表中的文件名复制和重命名新文件?
我必须为我的工作创建大约40多份员工评估表(我有表格的excel模板),并且我在excel表格中列出了他们的姓名 我想知道/希望是否有一种方法可以自动化复制模板的过程,然后在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.
我也可以使用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名员工。我确信有一个宏可以自动完成这个过程dos2unix employees.txt
template.xls
复制到employees.txt
dir,employeesDir
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”
。祝大家好运!