Unix에서 파일을 다른 파일 이름으로 복사하고 내용을 수정하는 가장 좋은 방법은 무엇입니까?

Unix에서 파일을 다른 파일 이름으로 복사하고 내용을 수정하는 가장 좋은 방법은 무엇입니까?

저는 요즘 Unix Script를 공부하고 있습니다. 이전에 Unix 스크립트를 사용해 본 적이 없었기 때문에 갑자기 내 프로그램을 지원하기 위해 Unix 스크립트를 만들어야 했습니다.

기본적으로 저는 제 경우에 대해 다음 조언을 찾고 있습니다.

ETL 도구 중 하나를 사용하여 로드해야 하는 소스 파일 이름 목록이 포함된 파일이 있습니다.

예를 들어 나는 VALID_FILENAME.csv이런 것을 가지고 있습니다.

test1_file.csv 
test2_file.csv 
test3_file.csv

각 부분마다 제목, 세부정보, 예고편이 있으므로 3개 부분으로 복사하고 싶습니다.

내 기대는 3개의 파일에 복사 VALID_FILENAME.csv하고 이름을 VALID_FILENAME_H, VALID_FILENAME_D로 지정하는 것입니다 VALID_FILENAME_T.

내용도 아래와 같이 교체하겠습니다.

VALID FILENAME_H:

test1_file_H
test2_file_H
test3_file_H

VALID FILENAME_D:

test1_file_D
test2_file_D
test3_file_D

VALID FILENAME_T:

test1_file_T
test2_file_T
test3_file_T

내 질문은 cp를 사용하고 파일 이름을 바꾸어 VALID_FILENAME.csv3개의 파일을 더 복사할 수 있다는 것입니다. sed를 사용하여 .csv를 H/D/T로 바꾸는 것도 가능합니까?

ETL 도구가 헤더, 세부 정보 및 트레일러를 별도의 프로세스로 처리하므로 이를 세 부분으로 분할해야 하는 이유는 무엇입니까?

파일을 복사하고 파일 이름을 다른 이름으로 바꾸고 Unix에서 파일 내의 문자열을 바꾸는 가장 좋은 방법에 대한 제안이나 의견을 감사드립니다.

답변1

cp만으로는 한 번의 실행으로 여러 파일을 만들 수 없습니다.

매우 우아하지는 않지만 다음 루프를 사용하여 목표를 달성할 수 있습니다.

for file in *.csv;do for end in _H _D _T ;do pc $file ${file%.csv}$end;done;rm $file;done

기본적으로 모든 csv 파일을 반복하여 세 개의 복사본을 만들고 원본을 삭제합니다.

관련 정보