find [경로] [옵션] [액션]
size 옵션
현재 시스템에서 가장 큰 파일 찾기
현재 시스템에서 50M 이상인 파일 찾기
find / -size +50M
50M이상인 파일들 확인
-type 타입 : 지정한 파일타입에 해당하는 파일. b,c,d,p,f,l,s 등이 있음
-empty : 비어 있는 파일, 단 일반파일 또는 일반 디렉토리에 한함
[수행할작업(action)]
-delete : 검색된 파일들을 삭제
-exec command ; : 지정한 command 를 실행
-exec command {} + : 검색된 파일들을 차례대로 매칭하면서 지정된 command 를 수행
-ls : 'ls - dils' 를 수행
-ok command ; : -exec 와 같지만 실행하기 전에 먼저 사용자에게 표준입력으로 수행할 command 를 입력 받는다.
만약 입력이 없다면 지정된 command 를 수행한다.
-print : 검색된 파일들에 대하여 전체파일 경로로 파일리스트를 표준출력으로 출력한다.
-printf format : 검색된 파일들에 대하여 지정된 format 형식으로 표준출력으로 출력
실습)
mkdir /practice/find_test
cd /practice//find_test/
touch test{01..10}
-delete 검색 결과 삭제
find . -type f -name "test*" -delete //f 파일
find . -type d -name "test*" -delete //디렉토리 d
test가 들어간 디렉토리를 삭제 확인
test가 들어간 파일 모두 삭제 확인
이름이 test로 시작하는 모든 파일을 현재 경로에서 삭제
-exec [명령어] \; 검색 결과를 지정한 명령어 처리
-exec [명령어] {} \; 검색 결과를 차례대로 매칭하면서 지정된 명령어 실행
find . -empty -exec ls -l \; //ls -l 을 세번침
find . -empty -exec ls -l {} \; //검색 결과가 {}에 대입
실습)
★vi find_test.sh
#!/bin/bash shebang : 해당 쉘로 이용하여 아래 스크립트를 실행하겠다는 것을 커널에게 알리는 부분
for z in $(seq 0 7); do
for i in $(seq 0 7); do
for j in $(seq 0 7); do
for k in $(seq 0 7); do
touch ${z}${i}${j}${k};
chmod ${z}${i}${j}${k} ${z}${i}${j}${k}
done;
done;
done;
done;
sh find_test.sh //명령어 실행
0000~7777 확인
★퍼미션???
-파일이나 디렉터리의 읽기, 쓰기, 삭제 등의 권한을 설정해 놓은것
ex) 퍼미션이 777 파일을 찾아서 화면에 출력
find . -perm 777 //정확히 허가권이 0777인 파일 검색
find . -perm +777 | sort -n | more //
//기준이 되는 허가권에 비트가 하나라도 일치하는 파일
rwxrwxrwx
./0001~./7777
find . -perm -777 //기준이 되는 허가권 이상인 파일
mkdir test
cd test
touch {1..7}
chmod 100 1
...
chmod 700 7
find . -perm +300 //허가권 300이 하나라도 일치 4가 없는거 확인
1,2,3,5,6,7
find . -perm -300
3
7
1. find 명령어로 이름이 0으로 시작하여 1로 끝나는 파일만 gzip을 압축
"0??1"
-exec [명령어] {} \;
find -name "0??1" -exec gzip {} \;
실습2)
★xargs(eXtended Arguments)
-표준 출력 값 을 이용하여 명령을 실행
-find와 사용 시 결과물을 다음 명령어에 인자로 전달하는 역할
-여러 명령어와 함께 조합하여 사용할수 있다.
-i 인자로 문자열을 전달
-t 상세한 정보 출력
mkdir /practice/xargs_test
cd /practice/xargs_test/
★ vi xargs_test.sh
#!/bin/bash
for z in $(seq 0 10); do
fallocate -l 10K "$RAMDOM.txt"
done;
for z in $(seq 0 10); do
fallocate -l 15K "$RAMDOM.txt"
done;
for z in $(seq 0 10); do
fallocate -l 20K "$RAMDOM.txt"
done;
sh xargs_test.sh
1.find를 쓰지 않고 크기가 10kb인 파일명만 출력하고 이름의 숫자가 작은순으로 정렬
ll -h | grep 10K | cut -d " " -f 8 | sort -n //★공백을 자르고 8번째 필드만 보겠다.
2. find를 사용하여 크기가 10kb인 파일을 출력하고 파일의 이름만 출력하여 정렬
find . -size 10k | cut -d " " -f 8 | sort -n
3. 현재 경로에서 find를 사용하여 크기가 15kb 파일을 삭제, 단 -delete 옵션 사용 금지
find . -size 15k -exec rm {} \;
k는 대문자K가아니라 소문자k로 해야인식이 된다. 용량15k 삭제 확인
★시험 find xargs
4. find 를 사용하지 않고 크기가 20k 파일을 삭제
ll -h | grep 20K | cut -d " " -f 8 | xargs rm
ex) find로 원하는 파일찾아서 해당 파일에서 특정 문자열 검색
★find / -name "*" | xargs grep [계정명:암호]
/etc/passwd
ex) /bin 디렉토리에 가장큰 일반 파일을 찾아 크기를 확인하여 가장 큰 파일을 출력
find /bin -type f | xargs du -s | sort -n | tail -1 //용량 확인 du
가장 용량이 낮은 파일과 높은 파일 확인
cd /practice/find_test/ 이동후 현재 디렉토리에 gz 압축파일 해제
현재 디렉토리에 위치한 모든파일 이름뒤에 .perm 붙이기
이름 변경하기
mv [원본] [대상]
0000~7777 -> 0000.perm ~ 7777.perm
mv 0000 0000.perm
~
mv 7777 7777.perm
ls | xargs -t -i mv {} {}.perm
ex) 0000 ls | xargs -t -i mv {0000} {0000}.perm 총7777개 실행
du -sh /* //큰 파일 확인
rm -rf ./*
rm -rf ./a*
★ls | xargs rm // 하나하나 삭제 새벽시간 서버 한가할때 . 작업많은 시간은 서버부하.
ex) rm 0000
rm 0001
원상복구 .perm삭제해보자
ls | cut -d "." -f 1 | xargs -t -i mv {0000}.perm {0000}
.perm 삭제 확인
'Server > Linux' 카테고리의 다른 글
xshell/ YUM (0) | 2017.04.22 |
---|---|
xshell/ RPM (0) | 2017.04.22 |
xshell/ 압축 gz bz2 xz (0) | 2017.04.19 |
xshell/ 부팅프로세스 (0) | 2017.04.19 |
xshell/ LVM (0) | 2017.04.18 |