반응형

안녕하세요 가야태자 @talkit 입니다. 

오늘은 리눅스에서 파일을 합치는 방법을 좀 알아 보도록 하겠습니다 

[리눅스/Linux] 파일 복사(Copy File) cp 명령어(Command) https://talkit.tistory.com/668

리눅스/Linux cat 간단한 텍스트 파일 보기 Simple Text File Viewer https://talkit.tistory.com/675

우선 파일을 합치기 위해서 몇개의 파일을 만들도록 하겠습니다. 

echo "안녕하세요 1" > hello1.txt
echo "안녕하세요 2" > hello2.txt
echo "안녕하세요 3" > hello3.txt
echo "노랑색 1" > yellow1.txt
echo "노랑색 2" > yellow2.txt
echo "노랑색 3" > yellow3.txt

리눅스에 접속하셔서 위 명령어를 입력해 주십시오.

한줄 한줄 해도 됩니다만 ^^

전체를 복사해서 붙여 넣으시면 됩니다. ^^

Putty를 사용하신다면, 복사하시고 <Shift> + <Insert> 를 누르시면 붙여 넣어 집니다. 

마우스로 오른쪽 클릭을 한번 하셔도 붙여 넣어 집니다. ^^

ubuntu@instance:~$ echo "안녕하세요 1" > hello1.txt
echo "안녕하세요 2" > hello2.txt
echo "안녕하세요 3" > hello3.txt
echo "노랑색 1" > yellow1.txt
echo "노랑색 2" > yellow2.txt
echo "노랑색 3" > yellow3.txt
ubuntu@instance:~$ ls -al
total 72
drwxr-x--- 4 ubuntu ubuntu 4096 Dec 24 11:16 .
drwxr-xr-x 4 root   root   4096 Dec 19 13:19 ..
-rw-r--r-- 1 ubuntu ubuntu  220 Jan  6  2022 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Jan  6  2022 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Dec 19 14:28 .cache
-rw------- 1 ubuntu ubuntu   20 Dec 24 11:13 .lesshst
-rw-r--r-- 1 ubuntu ubuntu  807 Jan  6  2022 .profile
drwx------ 2 ubuntu ubuntu 4096 Dec 19 13:19 .ssh
-rw------- 1 ubuntu ubuntu 1955 Dec 24 01:13 .viminfo
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello1.txt
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello2.txt
-rw-rw-r-- 1 ubuntu ubuntu   18 Dec 24 11:16 hello3.txt
-rw-rw-r-- 1 ubuntu ubuntu 1099 Dec 24 01:06 test.txt
-rw-rw-r-- 1 ubuntu ubuntu 2006 Dec 24 01:13 test2.txt
-rw-rw-r-- 1 ubuntu ubuntu 2006 Dec 24 01:13 text.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow1.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow2.txt
-rw-rw-r-- 1 ubuntu ubuntu   12 Dec 24 11:16 yellow3.txt

위와 같은 결과가 나올껍니다. 

실제로 hello1 파일과 yellow1 파일들이 생겼습니다.

그러면 저 친구들은 표준 출력을 해보십시오. ^^

더보기

cat hello1.txt
cat hello2.txt
cat hello3.txt
cat yellow1.txt
cat yellow2.txt
cat yellow3.txt

실제로 해보시면 아래와 같이 나옵니다. ^^

한줄 한줄 하셨으면 한줄씩 출력 될껍니다. 

더보기

cat hello2.txt
cat hello3.txt
cat yellow1.txt
cat yellow2.txt
cat yellow3.txt
안녕하세요 1
안녕하세요 2
안녕하세요 3
노랑색 1
노랑색 2
노랑색 3

자 그런데 다음 명령어도 가능 합니다. 

더보기

cat hello*.txt yellow*.txt

위와 같이도 가능 합니다. 

더보기

cat hello*.txt yellow*.txt
안녕하세요 1
안녕하세요 2
안녕하세요 3
노랑색 1
노랑색 2
노랑색 3

그러면 이제 이글의 제목인 파일 합치기에 대해서 알아 보겠습니다. 

먼저 방법은 cat을 이용하면 아래와 같습니다. 

시나리오는 hello로 시작하는 텍스트 파일을 hello.txt 파일로 만드는 것입니다. 

cat hello*.txt > hello.txt
cat hello1.txt hello2.txt hello3.txt > hello.txt

위 두가지 명령어로 가능 합니다. 

저는 위의 명령어를 주로 사용하기 때문에 한번 해보겠습니다. 맨 마지막에 cat로 한번 hello.txt를 출력도 해보겠습니다. 

더보기

ubuntu@instance-:~$ cat hello*.txt > hello.txt
ubuntu@instance-:~$ cat hello.txt
안녕하세요 1
안녕하세요 2
안녕하세요 3

제가 실행한것을 보면 세개의 hello 파일들이 합쳐져서 하나의 파일로 만들어 졌습니다. 

자 이제 여러분들도 해보십시오. 동일하게 yellow 로 시작하는 파일들을 합쳐 보십시오.

더보기

cat yellow*.txt > yellow.txt

cat yellow.txt

위와 같이 실행하면 합쳐 집니다. 

오늘은 cat을 이용해서 파일을 합치는 방법에 대해서 알아 보았습니다. 다음에는 cat과 grep을 이용해서 필터링 하는 방법을 한버 써 보도록 하겠습니다. 

리눅스에서 cat의 활용도가 높네요 ^^

감사합니다. 

반응형
반응형

image.png

안녕하세요 가야태자 @talkit 입니다.

오늘도 어제에 이어서 제 본업쪽 관련 된 글 입니다.

이글은 https://talkit.tistory.com/category/%EB%A6%AC%EB%88%85%EC%8A%A4%28LINUX%29 에서도 같이 연재 되고 있습니다.

파일 이동 시키기 mv 명령어 - https://talkit.tistory.com/667

위 글과 같이 오늘도 파일에 관련된 글입니다.

어제 글에서 살짝 힌트를 보여 드렸습니다. ^^

하지만 오늘 본격적으로 적어 보도록 하겠습니다.

우선 복사하다를 영어로 하면 copy 가 됩니다.

리눅스에서 cp는 copy의 약자 입니다. ^^


cp [옵션들] 원본파일 대상파일

음 CP의 옵션은 -r 하고 -f -v 정도 아시면 됩니다. ^^

먼저 -r 은 하위 디렉토리까지 복사를 한다는 이야기 입니다. 그래서 디렉토리를 복사할때는 무건 -r을 넣어 주셔야 합니다.

그리고, -f 는 어제 mv와 동일하게 강제로 파일을 덮어 씁니다. -f를 안주면 덮어 쓸껀지 물어 봅니다. ^^

-v 같은 경우는 복사하는 내용을 보여 줍니다.

cp와 mv의 가장 큰 차이점은 cp는 복사라서 원본이 그대로 남구요. mv는 원본이 사라진다는 겁니다. ^^


[talkit@localhost test]$ ls -al
합계 4
drwxrwxr-x 2 talkit talkit  22 12월 17 02:16 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
[talkit@localhost test]$

mv 와 마찬가지로 저기 보이는 test.txt 파일을 복사해 보겠습니다.


cp test.txt test_target.txt

명령어를 수행 하면


[talkit@localhost test]$ cp test.txt test_target.txt
[talkit@localhost test]$ ls
test.txt  test_target.txt
[talkit@localhost test]$

결과는 위와 같습니다.

test.txt와 test_target.txt 가 그대로 있습니다.


[talkit@localhost test]$ mkdir source
[talkit@localhost test]$ ls -al
합계 8
drwxrwxr-x 3 talkit talkit  59 12월 17 02:19 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt
[talkit@localhost test]$

source 라는 디렉토리가 생겼습니다

저 아이를 target 디렉토리로 변경해 보겠습니다.

틀린 명령어는 아래와 같습니다.


cp source target

정확한 명령어는 아래와 같습니다.


 cp -r source target

두가지 명령어를 모두 수행 해보겠습니다.


[talkit@server02 test]$ cp source target
cp: omitting directory `source'
[talkit@server02 test]$ cp -r source target
[talkit@server02 test]$ ls -al
합계 8
drwxrwxr-x 4 talkit talkit  73 12월 17 02:22 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit   6 12월 17 02:22 target
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt
[talkit@server02 test]$

복사할 내용 중에 디렉토리가 포함되어 있으면 오류가 납니다.

반드시 -r 옵션을 넣어 주셔야 합니다.

첫번째에서는 오류가 나고 두번째에서는 잘 복사가 되었습니다.

이번에는 target 디렉토리 안에 test.txt와 test_target.txt 를 한꺼번에 복사해보겠습니다.

*를 이용하시면 됩니다.


cp *.txt target/

여러분은 / 없이 target까지만 치시면 됩니다. 저는 저게 디렉토리라는 것을 나타내려고 /를 붙인 것 뿐입니다.

한번 해보겠습니다.


[talkit@server02 test]$ cp *.txt target
[talkit@server02 test]$ ls -alR
.:
합계 8
drwxrwxr-x 4 talkit talkit  73 12월 17 02:22 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit  45 12월 17 02:25 target
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt

./source:
합계 0
drwxrwxr-x 2 talkit talkit  6 12월 17 02:19 .
drwxrwxr-x 4 talkit talkit 73 12월 17 02:22 ..

./target:
합계 8
drwxrwxr-x 2 talkit talkit 45 12월 17 02:25 .
drwxrwxr-x 4 talkit talkit 73 12월 17 02:22 ..
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:25 test.txt
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:25 test_target.txt
[talkit@server02 test]$

복사는 오류 없이 잘 넘어 갔구요.

일부러 오랫만에 ls -alR 명령어를 이용해서 하위 디렉토리에 있는 파일을 리스팅 해보았습니다.

그랬더니 ^^ 잘 갔네요

이번에는 -v 옵션을 더 넣으서 target 폴더를 target2 폴더로 복사해보겠습니다.


[talkit@server02 test]$ cp -rv target target2
`target' -> `target2'
`target/test.txt' -> `target2/test.txt'
`target/test_target.txt' -> `target2/test_target.txt'
[talkit@server02 test]$ ls -alR
.:
합계 8
drwxrwxr-x 5 talkit talkit  88 12월 17 02:26 .
drwx------ 6 talkit talkit 147 12월 17 02:16 ..
drwxrwxr-x 2 talkit talkit   6 12월 17 02:19 source
drwxrwxr-x 2 talkit talkit  45 12월 17 02:25 target
drwxrwxr-x 2 talkit talkit  45 12월 17 02:26 target2
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:16 test.txt
-rw-rw-r-- 1 talkit talkit  28 12월 17 02:18 test_target.txt

./source:
합계 0
drwxrwxr-x 2 talkit talkit  6 12월 17 02:19 .
drwxrwxr-x 5 talkit talkit 88 12월 17 02:26 ..

./target:
합계 8
drwxrwxr-x 2 talkit talkit 45 12월 17 02:25 .
drwxrwxr-x 5 talkit talkit 88 12월 17 02:26 ..
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:25 test.txt
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:25 test_target.txt

./target2:
합계 8
drwxrwxr-x 2 talkit talkit 45 12월 17 02:26 .
drwxrwxr-x 5 talkit talkit 88 12월 17 02:26 ..
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:26 test.txt
-rw-rw-r-- 1 talkit talkit 28 12월 17 02:26 test_target.txt
[talkit@server02 test]$

복사하는 모습이 보이지요.

오늘은 일단 여기 까지 적고 수정할일이 있으면 수정 해놓겠습니다.

감사합니다.

반응형

+ Recent posts