여러 파일을 단일 파일로 병합하고 각 파일 이름의 일부를 추가합니다.

여러 파일을 단일 파일로 병합하고 각 파일 이름의 일부를 추가합니다.

수백 개의 파일이 있는데 각 파일에는 숫자 항목(예: 5243564)이 포함되어 있습니다. 각 파일 이름에는 식별자(FT, FM, FA 등)와 날짜(예: FT.20180315.txt)가 있습니다.

고유 식별자 파일과 번호가 매겨진 항목을 날짜와 함께 하나의 파일로 결합하고 싶습니다. 따라서 단일 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

관련 정보