리눅스 쉘에서 여러 파일을 하나로 합치는 방법을 소개합니다.
ls [파일명패턴] | xargs cat > [결과파일명]
위 명령어 한 줄로 [파일명패턴]에서 선택되어지는 파일들의 내용을 [결과파일명] 파일로 쓸 수 있습니다.
동작 방법을 살펴보면
ls [파일명패턴] 을 통해 먼저 대상 파일들을 선택합니다. ls 명령은 디렉토리에 존재하는 요소(파일, 디렉토리)들의 정보(파일명, 권한, 수정시간 등) 목록을 표준출력으로 출력하는 명령어로, 아무 옵션없이 실행하면 파일명들만 출력하게 됩니다.
ls 명령을 통해 출력된 파일명 목록을 |
(파이프)를 통해 뒤에 나오는 명령어로 전달합니다.
|
(파이프)는 이전 명령어의 실행 결과를 다음 명령어의 입력으로 사용할 때 활용됩니다.
다음은 xargs cat
입니다.
xargs는 앞 명령어의 실행결과를 다음 명령어의 인자로 사용할 수 있도록 해줍니다.
즉 앞의 ls 명령어 실행결과가 xargs 다음명령어인 cat의 인자로 사용되는 것이지요. 만약 ls 명령어의 실행결과가 file1 file2 file3 이렇다면 아래 명령어처럼 수행되는 것입니다.
cat file1 file2 file3
cat은 인자로 전달된 파일들의 내용을 표준출력으로 출력하는 명령어입니다. 이 명령어의 결과를 > (출력 리다이렉션) 으로 결과파일로 써줌으로써 각 파일들의 내용이 합쳐진 하나의 결과파일이 생성되게 됩니다. 파이프, 출력 리다이렉션 등 리눅스 명령어의 강력함을 다시한번 느끼게 되는 계기가 되었습니다.