#find [경로] [옵션] [액션]

 

size 옵션

현재 시스템에서 50메가 이상인 파일 찾기

#find / -size +50M

 

# mkdir /practice/find_test
# cd /practice/find_test

# touch test{01..10}

 

-delete 검색 결과 삭제

find . -type f -name "test*" -delete

이름이 tset로 시작되는거 다 삭제 해줌

-exec [명령어] \;    검색 결과를 지정한 명령어 처리

-exec [명령어] {} \; 검색 결과를 차례대로 매칭하면서 지정된 명령어 실행

 

# find . -empty -exec ls -l  \;

#find . -empty -exec ls -l {} \;

 

vi find_test.sh

 

#!/bin/bash

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 //명령어 실행

ex) 퍼미션이 777 파일을 찾아서 화면에 출력

#find . -perm 777    //정확히 허가권이 0777인 파일 검색

./0777

# find . -perm +777 | sort -n | more   

//기준이 되는 허가권에 비트가 하나라도 일치하는 파일

 

#find . -perm -777        //기준이 되는 허가권 이상인 파일

./7777
./0777
./3777
./2777
./5777
./4777
./6777
./1777

 

1.find 명령어로 현재 경로에 이름이 0으로 시작하여 1로 끝나는 파일만 gzip으로 압축 "0??1"

#find -name "0??1" -exec gzip {} \;

#ll *.gz

 

xargs

# mkdir /practice/xargs_test
 # cd /practice/xargs_test
 # vi xargs_test.sh


#!/bin/bash
for z in $(seq 0 10); do
    fallocate -l 10K "$RANDOM.txt"
done;

for z in $(seq 0 10); do
    fallocate -l 15K "$RANDOM.txt"
done;
for z in $(seq 0 10); do
    fallocate -l 20K "$RANDOM.txt"
done;

# sh xargs_test.sh

1.find를 쓰지 않고 크기가 10kb인 파일명만 출력하고 이름의 숫자가 적은순으로 정렬

# ll -h |grep 10K | cut -d " " -f 8 | sort

2. find를 사용하여 크기가 10kb인 파일을 출력하고, 파일의 이름만 출력하여 정렬

# find . -size 10k | cut -d "/" -f 2 | sort -n

3. 현재 경로에서 find를 사용하여 크기가 10kb 파일 삭제, 단 -delete 옵션 사용 금지

 

# find . -size 10k -exec rm {} \;

 

xargs (eXtended Arguments)

- 표준 출력 값(파일이름)을 이용하여 명령을 실행

- find와 사용 시 결과물을 다음 명령어에 인자로 전달하는 역할

- 여러 명령어와 함께 조합하여 사용할 수 있다.

-i 인자로 문자열을 전달

-t 상세한 정보 출력

 

4. find 를 사용하지 않고 크기가 20k 파일을  삭제
#ll -h | grep 20K | cut -d " " -f 8 | xargs rm 

 

ex) find로 원하는 파일찾아서 해당 파일에서 특정 문자열 검색

#find / -name "*" | xargs grep [계정명:암호]

 

ex)/bin 디렉토리에 가장 큰 일반 파일을 찾아 크기를 확인하여

가장큰 파일을 출력

1.#find /bin - type f | xargs du -s

2.#find /bin - type f | xargs du -s | sort -n | tail -1

 

ex) /practice/find_test 이동 후, 현재 디렉토리에 gz으로 압축된 파일 압축해제

#gunzip 0??1.gz

 

현재 디렉토리에 위치한 모든 파일의 이름뒤에 확장자 .perm 붙이기

이름 변경하기

mv [원본] [대상]

 

0000 ~ 7777 -> 0000.perm ~ 7777.perm

# ls | xargs -t -i mv {} {}.perm

 

#du -sh /*

 

#rm -rf ./*

rm -r ./0001 0002 이렇게 아규먼트가 늘어나는방향

 

#ls | xargs rm

rm 0000 

rm 0001 하나하나 다지움 

 

원상복구

#ls | cut -d "." -f 1 | xargs -t -i mv {}.perm {}

 

 

 

 

 

 

'리눅스 ' 카테고리의 다른 글

리눅스 부팅 프로세스  (0) 2017.04.16
압축해제 등등  (0) 2017.04.16
find 옵션  (0) 2017.04.16
LVM  (0) 2017.04.15
LVM명령어  (0) 2017.04.15

+ Recent posts