如何根据修改日期合并多个文件并忽略每个文件的第一行

如何根据修改日期合并多个文件并忽略每个文件的第一行

我有以下文件:

-rw-r--r--  1 xyz xyz    122 May 01 01:00  Test1
-rw-r--r--  1 xyz xyz    122 May 01 01:00  Test2
-rw-r--r--  1 xyz xyz    122 May 05 05:00  Test3
-rw-r--r--  1 xyz xyz    122 May 05 05:00  Test4

文件内容包含一行描述,后面跟着数据,以逗号分隔。例如:

测试1:

ID, Name, Job, Address
1111, John, Janitor, 1234 Corson Ave

测试2:

ID, Name, Job, Address
2222, Tim, Cashier, 3245 Elliot St

有人能否建议一个命令,该命令可以根据修改日期连接上述文件,同时忽略文件中的第一行,即描述(ID,姓名,工作,地址)。

例如,这是我想要的脚本:

连接后 5 月 1 日的文件:

1111, John, Janitor, 1234 Corson Ave
2222, Tim, Cashier, 3245 Elliot St

同样的事情May5_file_after_concatenate。我的目录将包含数百万个文件。我需要它根据修改日期自动排序并相应地连接它们。

我在 Centos 7 上。

答案1

在 中bash,您可以使用以下脚本:

#! /bin/bash
for file in "$@" ; do
    date=$(stat -c%y "$file" | cut -f1 -d' ')
    tail -n+2 "$file" >> "$date"
done

它遍历给定的文件,从中检索最后的修改日期,然后将从第 2 行开始的所有内容添加到以日期命名的文件中。

如果命令行或参数中有两个文件需要容纳,请按顺序(使用xargs或手动)对较小的文件组调用脚本。

转换日期格式应该很容易:-)

相关内容