find/xargs 의 완벽 한 결합

find 와 xargs 를 사용 하여 일괄 파일 작업 을 수행 합 니 다.
Liux 에는 많은 작은 도구 가 있 는데 그 자체 의 기능 은 매우 단일 하지만 결합 하면 강력 한 효 과 를 낼 수 있다. 예 를 들 어 find 와 xargs 의 결합 이다.find 명령 은 지정 한 디 렉 터 리 를 찾 는 데 사 용 됩 니 다.xargs 의 기능 은 표준 입력 에 있 는 텍스트 를 지정 한 명령 의 매개 변수 로 실행 하 는 것 입 니 다.xargs 명령 은 우리 가 평소에 많이 사용 하지 않 을 수도 있 습 니 다. 다음은 간단 한 예 를 보 겠 습 니 다.
[leconte@localhost ~]$ xargs wc -l
a.php
b.php
 
  9 a.php
  3 b.php
 12 总计

a. php 와 b. php 는 우리 가 수 동 으로 입력 한 것 입 니 다. 이것 은 내 파일 시스템 에 존재 하 는 파일 입 니 다. 입력 이 끝 난 후에 Ctrl + D 로 끝 문 자 를 보 내 면 xargs 가 실 행 됩 니 다. 먼저 표준 입력 중의 내용 을 빈 칸 빈 줄 등 구분자 에 따라 분리 한 다음 에 wc - l 의 매개 변수 로 통일 하여 실행 합 니 다. 즉, wc - l a. php b. php 명령 을 실행 한 것 과 같 습 니 다.find 명령 의 표준 출력 은 보통 조건 에 맞 는 일부 파일 의 목록 으로 파 이 프 를 통 해 후속 프로그램의 표준 입력 으로 바 뀔 수 있 습 니 다.후속 프로그램 이 xargs 라면 이 파일 목록 은 xargs 가 지정 한 명령 의 매개 변수 로 실 행 될 수 있 습 니 다. 그러면 파일 에 대한 대량 작업 을 실현 할 수 있 습 니 다.예 를 들 어 실행 디 렉 터 리 에 있 는 모든. tmp 파일 을 삭제 하려 면 find 와 xargs 명령 으로 이렇게 쓸 수 있 습 니 다.
find . -type f -name ‘*.tmp’ | xargs rm -v
예 를 들 면:
[leconte@localhost test]$ find . -type f -name '*.tmp'
./b.tmp
./c.tmp
./tmp/d.tmp
./tmp/e.tmp
./a.tmp
[leconte@localhost test]$ find . -type f -name '*.tmp' | xargs rm -v
已删除“./b.tmp”
已删除“./c.tmp”
已删除“./tmp/d.tmp”
已删除“./tmp/e.tmp”
已删除“./a.tmp”

실제 실행 되 는 명령 은 rm - v./b. tmp./c. tmp./tmp/d. tmp./tmp/e. tmp./a. tmp 입 니 다.그러나 find 와 xargs 의 결합 이 있 으 면 이 두 단 계 를 찾 고 삭제 하 는 것 을 한 단계 합성 하여 편리 하고 빠르다.또한 find 와 xargs 를 결합 하여 지정 한 디 렉 터 리 에서 텍스트 내용 을 검색 하 는 장면 도 자주 사용 합 니 다. 예 를 들 어 소스 코드 트 리 에서 printf 를 포함 하 는 C 코드 를 찾 습 니 다.
find ~/codeproject/-type f -name ‘*.c’ | xargs grep -i ‘printf’

좋은 웹페이지 즐겨찾기