본문 바로가기
Computer Science/Linux

Linux(5) 파일 유틸리티

by 희디 2021. 10. 4.

# 파일 속성으로 파일 찾기

$ find 디렉터리 [-옵션]

파일 이름이나 속성을 이용하여 해당하는 파일을 찾는다. 

옵션의 검색 조건에 따라 지정된 디렉터리 아래에서 해당되는 파일들을 모두 찾아 출력한다.

 

find 명령어 검색 조건

 

파일의 접근시간(-atime) 혹은 수정 시간(-mtime)으로 검색 

+n : 현재 시각을 기준으로 n일 이상 전 

n : 현재 시각을 기준으로 n일전

-n : 현재 시각을 기준으로 n일 이내 

 

파일 종류로 검색(-type)로 검색 

d: 디렉터리 

f : 일반 파일 

l : 심볼릭 링크 

b : 블록 장치 파일 

c : 문자 장치 파일

s : 소켓 파일 

 

※ 검색 조건들을 조합해서 사용할 수 있다. 

ex) $ find . -type d -perm 700 -print

     $ find . -name core -size +2048 -ls

 

검색된 파일 처리

find 명렁어의 -exec 옵션 : 검색한 모든 파일을 대상으로 동일한 작업(명령어)을 수행 

ex) $ find . -name core -exec rm -i {}\;

     $ find . -name *.c -atime +30 -exec ls -l {}\;

# 파일 필터링

1) $ grep 패턴 파일

: 파일(들)을 대상으로 지정된 패턴의 문자열을 검색하고, 해당 문자열을 포함하는 줄들을 출력한다.

1-1) grep 명령어 옵션 

정규식

파이프와 함께 grep 명령어 사용 

 - 어떤 명령어를 실행하고 스 실행 결과 중에서 원하는 단어 혹은 문자열 패턴을 찾고자 할 때 사용함. 

 - 예) $ ls -l | grep Kang

# 파일 정렬

1) $ sort [-옵션] 파일 

: 텍스트 파일(들)의 내용을 줄 단위로 정렬한다. 옵션에 따라 다양한 형태로 정렬한다.

 

1-1) 정렬 방법 

• 정렬 필드를 기준으로 줄 단위로 오름차순으로 정렬한다.

• 기본적으로는 각 줄의 첫 번째 필드가 정렬 필드로 사용된다.

• -r 옵션을 사용하여 내림차순으로 정렬할 수 있다. 

 

1-2) 정렬 필드 지정

필드 지정 기능
-k 필드번호 필드번호에 해당하는 필드를 기준으로 정렬.
이 옵션에서 필드번호는 1부터 시작됨.
(필드는 문장의 맨 앞을 기준으로 n번째 있는 단어의 필드가 n값을 가진다. )
+시작필드
–종료필드
시작필드부터 종료필드-1까지의 필드들을 기준으로 정렬.
이 때 필드 번호는 0부터 시작됨.

1-3) sort 명령어 옵션

 

ex) $ sort –t: -k 3 -n /etc/passwd

      /etc/passwd 파일에 있는 세번째 필드에 있는 문자를 기준으로 숫자값에 따라 비교해 정렬하라. 

 

추가)  -o 출력파일 옵션 : 정렬된 내용을 지정된 파일에 저장가능.

         -n 옵션일 경우, 숫자문자열의 경우에 숫자의 크기에 따라 비교하여 정렬가능하다. 

# 파일 비교

1) $ cmp 파일1 파일2 

: 파일1과 파일2가 같은지 비교한다. 

$ cmp you.txt me.txt

>> you.txt me.txt 다름: 340 자, 10 행

 

2) diff [-i] 파일1 파일2 

  파일1과 파일2를 줄 단위로 비교하여 그 차이점을 출력한다.

  -i 옵션은 대소문자를 무시하여 비교한다

  출력형식) 첫 번째 파일을 두 번째 파일 내용과 같도록 바꿀 수 있는 편집 명령어 형태로.

 

2-1) diff 출력 : 편집 명령어

 

추가 (a) 

ex) 첫 번째 파일의 줄 n1 이후에 두 번째 파일의 n3부터 n4까지의 줄들을 추가

=> n1 a n3,n4

> 추가할 두 번째 파일의 줄들

 

삭제 (d)

첫 번째 파일의 n1부터 n2까지의 줄들을 삭제하면 두 번째 파일의 줄 n3 이후 와 서로 같다.

=> n1,n2 d n3

< 삭제할 첫 번째 파일의 줄들

 

변경 (c)

첫 번째 파일의 n1부터 n2까지의 줄들을 두 번째 파일의 n3부터 n4까지의 줄 들로 대치하면 두 파일은 서로 같다.

 

n1,n2 c n3,n4

< 첫 번째 파일의 대치될 줄들 --

> 두 번째 파일의 대치할 줄들

# 기타 파일 조작 

1) 파일 나누기 

$ split [-l n] 입력 파일 [출력파일]

: 하나의 입력파일을 일정한 크기의 여러 개 작은 파일들로 분할한다.

 -l n 옵션 을 이용하여 분할할 줄 수를 지정할 수 있다. (n은 줄 수(=숫자))

 

2) 파일 합병

$ cat 파일1 파일2 > 파일3: 파일1과 파일2의 내용을 붙여서 새로운 파일3을 만들어 준다.

 

$ paste [-s] [-d구분문자] 파일 : 여러 파일들을 병합하여 하나의 파일을 만들어 준다.

 -s : 한 파일 끝에 다른 파일 내용을 덧붙인다.

 -d구분문자 : 어떠한 문자로 열을 구분하는지 지정한다. 기본값은 탭 문자이다.

 


<grep 명령어 실습>

<sort 명령어 실습>

/etc/passwd의 계정명의 오름차순으로 정렬하여 파일에 저장하기 

 

/etc/passwd 파일의 첫번째 필드의 단어를 기준으로 알파벳 순서로 정렬되어 -o 옵션을 이용하여 passwd.sort1 파일을 생성하였다. 그리고 실제로 a b c d .. 순서로 정렬된 것을 확인할 수 있다. 

 

/etc/passwd의 파일의 UID의 알파벳순으로 정렬하여 파일에 저장하기 

실제로 3번째 필드의 값이 108 -> 109 ... -> 113 -> 114 등 오름차순으로 잘 정렬된것을 확인할 수 있다. 

<find 명령어 실습> 

1) find 명령어를 사용하여 /etc 디렉터리의 모든 파일 중 심볼릭 링크 파일들만을 상세하게 리스트하기

 

'Computer Science > Linux' 카테고리의 다른 글

(6) BASH 스크립트  (0) 2021.11.15
(5) 유틸리티  (0) 2021.11.15
Linux(1) 유닉스 기본 명령어  (0) 2021.09.12