find 와 grep 의 결합 사용

3244 단어 F#
function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}
xargs - build and execute command lines from standard input
find 명령 의-exec 옵션 을 사용 하여 일치 하 는 파일 을 처리 할 때 find 명령 은 일치 하 는 모든 파일 을 exec 에 전달 합 니 다.그러나 일부 시스템 은 exec 에 전달 할 수 있 는 명령 길이 에 제한 이 있어 find 명령 이 몇 분 실행 되면 넘 치 는 오류 가 발생 할 수 있 습 니 다.오류 정 보 는 보통'매개 변수 열 이 너무 길 어 요'나'매개 변수 열 이 넘 쳐 요'입 니 다.이것 이 바로 xargs 명령 의 용도 입 니 다.특히 find 명령 과 함께 사용 합 니 다.
find 명령 은 일치 하 는 파일 을 xargs 명령 에 전달 합 니 다.xargs 명령 은 매번 일부 파일 만 가 져 옵 니 다.-exec 옵션 처럼.이렇게 하면 가장 먼저 가 져 온 일부 파일 을 처리 한 다음 에 다음 파일 을 처리 하고 이렇게 계속 할 수 있다.
일부 시스템 에 서 는-exec 옵션 을 사용 하면 일치 하 는 파일 을 처리 하기 위해 해당 하 는 프로 세 스 를 시작 합 니 다.일치 하 는 파일 을 모두 매개 변수 로 실행 하 는 것 이 아 닙 니 다.이렇게 하면 일부 상황 에서 프로 세 스 가 너무 많 고 시스템 성능 이 떨 어 지 는 문제 가 발생 하기 때문에 효율 이 높 지 않다.
xargs 명령 을 사용 하면 프로 세 스 가 하나 밖 에 없습니다.또한 xargs 명령 을 사용 할 때 모든 파 라 메 터 를 한 번 에 가 져 올 지,파 라 메 터 를 나 누 어 가 져 올 지,그리고 매개 파 라 메 터 를 가 져 올 때마다 이 명령 의 옵션 과 시스템 커 널 에 해당 하 는 조절 가능 한 매개 변수 에 따라 확인 합 니 다.
xargs 명령 이 어떻게 find 명령 과 함께 사용 되 는 지 보고 예 를 들 어 보 겠 습 니 다.
다음 예 는 시스템 의 모든 일반 파일 을 찾 은 다음 xargs 명령 을 사용 하여 각각 어떤 파일 에 속 하 는 지 테스트 합 니 다.#find . -type f -print | xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory: ISO-8859 text\
......
전체 시스템 에서 메모리 정보 저장 파일(core dump)을 찾 은 다음 결 과 를/tmp/core.log 파일 에 저장 합 니 다.$ find / -name "core" -print | xargs echo "" >/tmp/core.log위의 이 실행 이 너무 느 려 서 현재 디 렉 터 리 에서 찾 는 것 으로 바 꾸 었 습 니 다.#find . -name "file*" -print | xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6
현재 디 렉 터 리 에서 모든 사용자 가 읽 기,쓰기,실행 권한 을 가 진 파일 을 찾 고 쓰기 권한 을 회수 합 니 다.# ls -l
drwxrwxrwx 2 sam adm 4096 10 30 20:14 file6
-rwxrwxrwx 2 sam adm 0 10 31 01:01 http3.conf
-rwxrwxrwx 2 sam adm 0 10 31 01:01 httpd.conf

# find . -perm -7 -print | xargs chmod o-w
# ls -l
drwxrwxr-x 2 sam adm 4096 10 30 20:14 file6
-rwxrwxr-x 2 sam adm 0 10 31 01:01 http3.conf
-rwxrwxr-x 2 sam adm 0 10 31 01:01 httpd.conf
grep 명령 으로 모든 일반 파일 에서 hostname 이라는 단 어 를 검색 합 니 다:# find . -type f -print | xargs grep "hostname"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
현재 디 렉 터 리 에 있 는 모든 일반 파일 에서 hostnames 라 는 단 어 를 grep 명령 으로 검색 합 니 다.# find . -name \* -type f -print | xargs grep "hostnames"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
위의 예 에서\find 명령 의*셸 에 있 는 특별한 의 미 를 취소 하 는 데 사 용 됩 니 다.
find 명령 은 exec 와 xargs 를 사용 하여 사용자 가 일치 하 는 파일 에 대해 거의 모든 명령 을 수행 할 수 있 도록 합 니 다.

좋은 웹페이지 즐겨찾기