以下のファイルがあります:
-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
手動で) 呼び出します。
日付形式の変換は簡単なはずです :-)