bash script (backup)2021. 7. 13. 13:35

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/520761

 

파일 내용을 출력하기 위해 주로 사용하는 cat 명령은 내용만 출력하고 파일명은 출력하지 않는다. 여러개의 파일 내용을 한꺼번에 확인하고 싶을 때는 파일명을 식별할 수 없기 때문에 불편한 경우가 생길 수 있다.

 

# .txt 확장자인 파일의 내용을 출력, 파일명은 출력되지 않음

cat *.txt

 

파일명을 같이 출력하고 싶다면 cat 명령 대신 head 명령을 사용하자. 여러개의 파일에 대해 적용했을 경우 파일명이 함께 출력된다. 원래 head 명령은 파일의 앞쪽 내용 일부를 출력하기 위한 것이나, 옵션을 조정하면 cat 명령처럼 내용 전체를 출력할 수 있다. 아래의 예시를 참고하자.

 

# myfile.txt에서 맨 앞 5개 행을 출력(-n 옵션값이 양수)

head -n 5 myfile.txt

 

# myfile.txt에서 맨 뒤 3개 행을 제외한 나머지를 출력(-n 옵션 값이 음수)

head -n -3 myfile.txt

 

# myfile.txt 내용 전체를 출력

head -n -0 myfile.txt

 

자, 이제 여러개의 파일에 대해 파일명과 함께 내용을 출력해 보자.

 

# .txt 파일에 대해 파일명과 내용 전체를 출력

head -n -0 *.txt

==> filename1.txt <==

[filename1.txt의 내용]

==> filename2.txt <==

[filename2.txt의 내용]

...

Posted by 반달가면

댓글을 달아 주세요

bash script (backup)2021. 5. 10. 15:36

 

반달가면 이글루에서 백업 - bahndal.egloos.com/514695

 

조금 생각해 보면 금방 알 수 있는 내용이긴 하지만, 최근 쇠퇴하고 있는 기억력을 절감하는 중이라 적어 두기로 했다.

grep 명령을 이용해서 특정 문자열을 검색하고 해당 문자열을 포함한 파일명을 찾는 자세한 방법은 이전에 올린 게시물을 참고하자.

 

일단 아래의 예시를 보자. -H 옵션을 사용하면 결과가 파일명:문자열 형태로 출력된다. -r(recursive) 옵션은 지정한 디렉토리와 그 하위 디렉토리에서 검색하기 위한 것이다.

# /home/john/Documents 디렉토리와 그 하위 디렉토리에서 abcd를 포함한 파일명과 해당 문자열을 출력
grep -Hr abcd /home/john/Documents

/home/john/Documents/my_file.txt:abcdefg

/home/john/Documents/my_file2.dat:abcde_xyz

 

다단계로 복잡한 검색을 하면서 파일명도 확인하려고 한다면, 일단 파일명을 확인하기 위한 -H 옵션으로 검색을 하고, 나머지 복잡한 검색을 파이프(|)를 이용해서 뒤쪽으로 이어주면 된다. 아래의 예시를 보자.

 

# abcd가 포함된 파일명과 해당 문자열을 검색한 후에 xyz가 포함된 항목을 제외(-v 옵션)

grep -Hr abcd /home/john/Documents | grep -v xyz

/home/john/Documents/my_file.txt:abcdefg

 

파이프 이후에는 -H 옵션이 의미가 없어진다. 입력이 파일이 아니라 이전 명령의 출력값이 되기 때문이다. 아래와 같이 사용하면 파일명을 확인할 수 없다.

 

# 이렇게 하면 파일명 확인 불가능

grep -r abcd /home/john/Documents | grep -H -v xyz

 

Posted by 반달가면

댓글을 달아 주세요

bash script (backup)2021. 1. 28. 13:36

 

반달가면 이글루에서 백업 - bahndal.egloos.com/498262

 

grep 명령을 이용하면 특정한 문자열을 포함하고 있는 파일들이 뭐가 있는지 찾을 수 있다. 훌륭하군!

일단 기본부터 차근차근 살펴보자. grep 명령의 기본 형식은 아래와 같다.

# [옵션]을 적용하여 [파일]의 내용을 검색, [문자열]을 찾음
grep [옵션] [문자열] [파일]

 

이제 아래의 예시를 보자. my_memo.txt 파일에서 abcd 문자열이 포함되어 있는지 검색하고 파일명과 함께 문자열이 포함된 행을 찾아 출력하는 것이다. -H 옵션을 주면 찾은 문자열뿐만 아니라 해당 파일명을 같이 출력해 준다. 파일명과 문자열은 콜론(:)으로 구분된다.

 

grep -H abcd my_memo.txt

my_memo.txt:abcdef

 

문자열은 필요 없고 파일명만 확인하고 싶다면 아래와 같이 -l 옵션을 추가하자.

 

grep -Hl abcd my_memo.txt

my_memo.txt

 

자, 이제 특정 디렉토리와 그 하위 디렉토리에 있는 여러개의 파일들 중에 특정한 문자열을 포함한 파일이 있는지 찾고 파일명을 확인해 보자. -r 옵션(recursive)을 이용하고 파일 대신 디렉토리를 지정하면 된다. 아래의 예시는 ~/Documents 디렉토리의 모든 파일을 검색, 내용에 abcd가 포함된 파일 찾아 파일명을 출력하는 경우이다.

 

grep -Hlr abcd ~/Documents

 

만약 특정 파일만 골라서 확인하고 싶다면 --include 옵션을 추가한다. 아래의 예시는 확장자가 txt인 파일만 대상으로 검색하는 경우이다.

 

grep -Hlr --include=*.txt abcd ~/Documents txt

 

파일 중에 v로 시작되는 파일은 제외하고 검색하려면 여기에 --exclude 옵션을 추가.

 

grep -Hlr --include=*.txt --exclude=v* abcd ~/Documents

 

 

Posted by 반달가면

댓글을 달아 주세요