数百のファイルがあり、各ファイルには数値エントリ(たとえば5243564
)が含まれています。各ファイル名には、識別子(FT、FM、FAなど)と日付(例FT.20180315.txt
:)があります。
一意の識別子ファイルと番号付き項目を日付とともに1つのファイルに結合したいと思います。したがって、単一のFTファイルは次のようになります。
20180315 5243564
20180316 1234566
など
これにより、次のことができますcat *FT* > FT.txt
。
ただし、これは各ファイルの日付を取得しません。
答え1
一文でawk
作業が完了します。
awk '{ printf("%s %s\n", substr(FILENAME, 4, 8), $0); }' FT.*.txt > FT.txt
お知らせいただいた例をもとにテストしてみました。必要に応じて調整してください。
答え2
以下は、必要なタスクを実行する簡単なスクリプトです。ミニマリストですが、基本的な手順を示しています。このスクリプトが次のように呼び出されるとします。combine.sh
#!/bin/sh
#Add logic for better parsing of args.
IDENT=$1
SEARCHDIR=$2
# For each file in the Search Directory
# that starts with the Unique Identifier...
for f in "$SEARCHDIR/$IDENT"*; do
datestr=$(echo "$f" | cut -d '.' -f2)
value=$(cat "$f")
echo "$datestr $value"
done
これで簡単にこれを行うことができます:
$> combine.sh FT /path/to/my/datadir > FT.txt