1. find[경로][옵션][명령]
시스템 내에 있는 파일/디렉터리를 찾아줍니다.
<예제 1> find 사용해보기
찾을 파일을 만들기 위해 find_test 디렉터리 생성 후 이동
# mkdir /FIND
# cd /FIND
파일을 만들기 위해 스크립트를 생성
# vi file_maker.sh
다중 반복문을 이용하여(000 ~ 777)파일을 생성하고 파일의 허가권도 설정
#! 셔뱅 (어떠한 프로그램을 이용하여 동작시킬 것인지를 커넬에게 알려주기 위해서 명시하는 설정)
생성한 스크립트 실행
원활한 예시를 위해 스크립트 파일을 지우기
# rm -r per_file.sh
# find [옵션]
-perm
지정한 허가권을 가지고 있는 파일 검색
→ 형식
-perm [허가권] : 정확히 [허가권]과 일치하는 파일
-perm +[허가권] : [허가권]에서 하나의 값(비트)이라도 일치하는 파일
-perm -[허가권] : [허가권]을 포함한 추가적인 허가권(퍼미션)을 갖는 파일
-perm [허가권] 사용하기
-perm +[허가권] 사용하기
● ● ●
777(rwx rwx rwx) rwx 중 하나라도 포함되면 검색됩니다.
⇒ 허가권이 000(--- --- ---)인 파일만 검색되지 않습니다.
<-perm -[허가권] 사용하기>
허가권이 770(rwx rwx ---)을 포함한 파일만 검색됩니다.
/bin 경로에 SetUID가 설정된 파일을 검색
SetUID = 4000
<파일의 크기로 검색하기>
FIND2 디렉터리 생성 후 이동
# mkdir FIND2
# cd /FIND2
size_test.sh 스크립트 파일 생성
# vi size_test.sh
size_test.sh 스크립트 파일 내용
반복문과 fallocate를 이용하여 10KB, 20KB, 30KB의 파일을 각 5개를 만들고 $RANDOM으로 파일명을 임의의 값으로 지정해줍니다.
※ fallocate - 지정한 크기를 가진 파일 생성
※ $RANDOM 환경 변수 - 임의의 값을 가지고 있는 변수
size_test.sh 스크립트 파일 실행 후 확인
원활한 예시를 위해 스크립트 삭제
# rm -r size_test.sh
파일 확인하기
임의의 값의 이름으로 설정된 파일들이 10KB, 20KB, 30KB로 각 5개씩 생성되었습니다.
① 20KB의 파일을 검색
② 20KB 초과 파일 검색
③ 30KB 미만 파일 검색
-exec 사용하기
# find [명령]
-exec [명령어]\; - 검색된 파일을 대상으로 명령어를 실행
-exec [명령어] { } \;
/FIND3 디렉터리 생성 후 이동
# mkdir FIND3
# cd /FIND3
/FIND3 디렉터리 안에 file1 ~ file3 파일 생성
# touch file{1..3}
-exec [명령어]\; 사용
검색된 결과에 하나씩 ls -l을 실행합니다.
-exec [명령어] {} \; 사용
- 검색된 결과가 {}안으로 들어갔다고 생각합니다.
- 검색된 결과가 명령어의 인자로 사용합니다.
2. xargs (eXtended ARGumentS)
- 표준 출력 값을 이용하여 명령을 실행합니다.
- 인자를 필터링하여 넘겨주고 명령어에 인자로 전달하는 역할을 합니다.
- find와 사용 시 결과물을 다음 명령어에 인자로 전달합니다.
- 여러 명령어와 함께 조합을 하면 강력한 기능을 갖습니다.
→ [옵션]
-i 출력 결과를 인자로 사용
-t 상세한 정보 출력 (화면에 실행 결과 출력)
<예제 1> xargs 사용하기
모든 파일들의 확장자를 txt로 바꾸기
● ● ●
<예제 2> xargs를 find와 사용하기
XARGS 디렉터리 생성 후 이동
# mkdir /XARGS
# cd /XARGS
xargs_test.sh 스크립트 파일 생성
# vi xargs_test.sh
xargs_test.sh 파일 내용
이중 반복문과 touch를 이용하여 (00 ~ 55)파일 생성
xargs.sh 스크립트 파일 실행 후 확인하기
31 파일 안에 Hello world라는 내용 추가
일반 파일 중에 Hello world라는 내용을 가진 파일 검색
/XARGS 디렉터리 안에 있는 파일들 중 find로 검색된 (일반 파일) 결과가
xargs 명령어에 의해서 grep 명령어의 인자로 전달합니다.
<검색 결과 삭제하기>
find [명령]
-delete 검색 결과를 삭제합니다.
<예제 1>
/FIND 디렉터리에 있는 허가권이 015인 파일을 검색하여 삭제
파일이 삭제된 것을 확인할 수 있습니다.
/FIND 디렉터리에 있는 일반 파일을 검색하여 삭제
현재 경로에서 일반파일(f)을 찾아 삭제
3. du (Disk Usage)
파일이나 디렉터리의 용량 확인
→ [옵션]
-s 요약하여 출력
-h 사람이 읽기 쉽게 단위를 변경
<예제 1>
/etc 디렉터리 안의 파일/디렉터리의 용량 확인
/etc/passwd 파일의 용량 확인
★★★
find 옵션
[옵션]
-empty : 비어 있는 파일, 단 일반파일 또는 일반 디렉토리에 한함
-uid n : 지정된 n값의 UID를 갖는 파일
-gid n : 지정된 n값의 GID를 갖는 파일
-group 그룹명 : 지정한 그룹명에 소속된 파일
-name : 지정된 형식의 패턴을 가지는 파일
-newer 파일 : 지정한 파일보다 더 최근에 변경된 적이 있는 파일
-used n : 파일이 변경된 이후 최근 n일 이후에 액세스된 적이 있는 파일
-user uname : 지정한 uname의 소유로 된 모든 파일(UID로 지정가능)
-amin n : 최근 n분 이전에 액세스된 적이 있는 파일
-anewer 파일 : 지정한 파일보다 더 최근에 액세스된 적이 있는 파일
-atime n : 최근 n*24 시간 전에 액세스된 적이 있는 파일
-mmin n : 최근 n분 이전에 변경된 적이 있는 파일
-mtime n : 최근 n*24 시간 이전에 변경된 적이 있는 파일
-executable : 실행 가능한 파일
-readable : 읽기 가능한 파일
-writable : 쓰기 가능한 파일
-fstype type : 지정한 파일시스템타입(type)에 존재하는 파일
-nogroup : 소속그룹이 존재하지 않는 파일
-nouser : 소속 사용자(ID)가 존재하지 않는 파일
-path 패턴 : 파일명이 패턴에 매칭되는 파일
-perm 모드 : 모드에서 지정된 퍼미션과 일치하는 퍼미션을 가진 파일만 해당됨.
-perm -mode : 모드에서 지정된 퍼미션을 가진 모든 파일.
-regex 패턴 : 패턴에서 지정한 정규표현식에 매칭되는 파일
-size n[cwbkMG] : 지정된 n 단위의 디스크공간을 사용하는 파일. 디폴트는 b
-type 타입 : 지정한 파일타입에 해당하는 파일. b,c,d,p,f,l,s 등이 있음
[수행할작업(action)]
-delete : 검색된 파일들을 삭제
-exec command ; : 지정한 command 를 실행
-exec command {} + : 검색된 파일들을 차례대로 매칭하면서 지정된 command 를 수행
-ls : 'ls - dils' 를 수행
-ok command ; : -exec 와 같지만 실행하기 전에 먼저 사용자에게 표준입력으로 수행할 command 를 입력 받는다. 만약 입력이 없다면 지정된 command 를 수행한다.
-print : 검색된 파일들에 대하여 전체파일 경로로 파일리스트를 표준출력으로 출력한다.
-printf format : 검색된 파일들에 대하여 지정된 format 형식으로 표준출력으로 출력
[연산자]
( ) : 괄호( )안의 연산이 먼저 행해짐
! expr : expr 이 거짓일때 참, 참일때 거짓이 됨.
-not expr : 위의 ! expr 과 동일함 (POSIX 호환용)
expr1 expr2 : AND 의 의미. expr1 이 거짓일 때에는 expr2 는 평가되지 않음
expr1 -a expr2 : 'expr1 expr2' 와 같음
expr1 -and expr2 : 'expr1 expr2' 와 같음 (POSIX 호환용)
expr1 -o expr2 : OR 의 의미. expr1 이 참일 경우 expr2 는 평가되지 않음.
expr1 -or expr2 : 'expr1 -o expr2' 와 같은 의미
'서버 > Linux' 카테고리의 다른 글
[Linux] 네트워크 관련 파일 (0) | 2017.10.24 |
---|---|
[Linux] 부팅 프로세스 (0) | 2017.10.23 |
[Linux] quota (쿼터) 설정 (0) | 2017.10.23 |
[Linux] RAID (4) 0,1,5의 고장과 원상 복구하기 (0) | 2017.10.23 |
[Linux] 마운트 ( Mount ) (0) | 2017.10.23 |