수백 개의 파일이 있는데 각 파일에는 숫자 항목(예: 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