목록을 기반으로 파일 추가

목록을 기반으로 파일 추가

파일에 해당하는 목록이 있습니다. 파일은 목록에 나타나는 순서에 따라 단일 파일에 추가되어야 합니다.

  order.list:
  FLORIDA        #corresponding file is florida.txt
  ILLINOIS       #corresponding file is illinois.txt
  UTAH           #corresponding file is utah.txt

위의 방법을 사용하여 utah.txt, florida.txt,illinois.txt 순서로 파일을 첨부 order.list해야 합니다..txt

  scenario 1:
  order.list:
  UTAH
  FLORIDA
  ILLINOIS

  cat utah.txt >> final.txt
  cat florida.txt >> final.txt
  cat illinois.txt >> final.txt

  scenario 2:
  order.list:
  ILLINOIS
  UTAH

  cat illinois.txt >> final.txt
  cat utah.txt >> final.txt

목록의 순서를 변경하는 것 외에도 order.list두 개의 행만 포함될 수도 있고 한 개의 행만 포함될 수도 있습니다.

if 문을 사용해 볼 수도 있지만 시간이 오래 걸릴 수 있습니다. 이 문제를 처리하는 효율적인 방법이 있습니까?

답변1

이건 어때:

rm final.txt & cat order.list | tr '[:upper:]' '[:lower:]' | while read line; do cat $line.txt >> final.txt; done

먼저 기존 Final.txt를 삭제한 다음 order.list를 읽고 이를 소문자로 변환한 다음(제공한 입력에 따라) 읽기 순서에 추가합니다.

답변2

#!/bin/bash

INPUT_FILE=order.list
OUTPUT_FILE=final.txt
# Empty the output file
>${OUTPUT_FILE}

while read COUNTRY
do
        FILENAME=$(echo ${COUNTRY} | tr '[A-Z]' '[a-z]')
        cat ${FILENAME}.txt >> ${OUTPUT_FILE}
done < ${INPUT_FILE}

관련 정보