複数のファイルを変更日に基づいて結合し、各ファイルの最初の行を無視する方法

複数のファイルを変更日に基づいて結合し、各ファイルの最初の行を無視する方法

以下のファイルがあります:

-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手動で) 呼び出します。

日付形式の変換は簡単なはずです :-)

関連情報