LINUX
2013.10.17 11:36

xargs 사용법

조회 수 42402 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

# xagrs 사용하기


서버 운영을 하다 보면 다양한 파일 목록을 추출해서 삭제, 복사 등을 해야 할때가 있다

이런 작업을 단순하게 진행할 수 있게 도움을 주는 명령어가 xargs이다. 


보통 기본적인 명령어(find, ls, cat) 뒤에 파이프로 추가하여 사용함 

간단히 설명하면 파이프 이전의 내용을 인자로 받아 명령어를 실행하는 구조


기본적인 사용법은

xargs [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]] [-n max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]] [--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive] [--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs] [--max-args=max-args] [--no-run-if-empty] [--version] [--help] [명령 [기본인수]]  


ㅋㅋ 거참 길다 옵션이나 자세한 내용이 필요하면 아래 페이지에 가서 찾아보고

http://man.kldp.net/wiki/ManPage/xargs.1 


# 간단한 사용법

 - find를 이용하여 mtime이 30일 이상된 파일들을 ..bak으로 바꾸기

$ find . -mtime +30 | xargs mv -i {} {}.bak  


 - find를 이용하여 *.mp3 파일을 지우기

$ find . -name '*.mp3' | xargs rm 


 - ls 를 이용해서 text 파일 목록을 가져온 뒤 각각의 파일내용을  cat으로 읽고 병합파일 만듬

$ ls *.txt | xargs cat >> abc.merge 

이런식으로 사용하면 된다.


하다보니 find명령어랑 많이 쓰게 되는데 find 명령어의 -exec를 이용해도 된다 

하지만!! 기본적으로 find의 -exec는 명령의 인자   argument too long (메시지 정확치 않음 발생함 

그리고 find  exec 구문에 비해서 명령을 수행시키는 횟수를 현격히 줄일  있기 때문에 유리함

그래서 xargs를 이용하는 편이 속시원한 옵션에 한번에 처리할수 있는 개수를 지정하는 옵션도 있음 


추가로 kldp에 xargs 관련 질문에 달린 고급 정보


[find 삭제의 예에서 exec 사용할 경우 찾아낸 하나 하나 파일 마다 rm명령어가 실행되어

서브 프로세스가 생성됩니다.

그러므로 pc에서의 적은양의 파일을 삭제  경우엔  문제가 없지만서버 급과 같은 곳에서 많은 파일들을 처리  경우 문제 퍼포먼스에 문제가 있을  있다고 들었습니다. ( IBM 포럼?에서)

그리고 xargs 역시 처리할수 있는 인자 수에는 제한이 있습니다.
sysctl 에서 확인해 보면 된다고 하네요제가  기사에서는 655xx 문자(바이트였던거 같습니다.

그래서 find  삭제시에는 find 자체에 있는 -delete 스위치(옵션 철자 틀릴  있음 사용해서 지우는 것이 가장 이상적이다고 언급하고 있었습니다.]


끝~!


참고사이트

http://man.kldp.net/wiki/ManPage/xargs.1

http://blog.naver.com/PostView.nhn?blogId=siyang6&logNo=30047770322

http://kldp.org/node/40182


출처 : http://blog.naver.com/PostView.nhn?blogId=juner84&logNo=100147831887


Dreamy의 코드 스크랩

내가 모으고 내가 보는

List of Articles
번호 분류 제목 날짜 조회 수 추천 수
311 C# LDAP Active Directory 계정에서 사진 얻어오기 2013.08.07 12224 0
310 C# 사용자 정의 이벤트(event) 예제 2013.08.08 12957 0
309 C# 텍스트 파일에서 읽기/쓰기 2013.08.08 13933 0
308 Android adb am 명령어 ; app 실행 및 Intent 전송 2013.08.12 102026 0
307 Android adb shell pm 명령어 ; apk 파일 추출 및 인스톨 2013.08.12 43429 0
306 JAVA jsoup - 자바를 위한 BeautifulSoup (HTML parser) 2013.08.13 25674 0
305 Android ADB로 스크린 캡쳐하여 저장하는 방법 2013.08.13 46798 0
304 Android Perl 정리 요약 2013.08.13 14922 0
303 C# 델리게이트와 이벤트(Delegates and Events) 2013.08.14 11003 0
302 C# AutoResetEvent 클래스 - 신호(Signal)에 의한 쓰레드 동기화 2013.08.14 15606 0
301 일반 HTML 도움말 및 테스트하는 사이트 2013.09.09 16863 0
300 C# Application 클래스 2013.09.25 11145 0
299 C# C# XML Documentation - C# 소스코드 문서화 [출처] C# XML Documentation - C# 소스코드 문서화 2013.10.01 15541 0
» LINUX xargs 사용법 2013.10.17 42402 0
297 C# 변경된 파일을 감시하는 루틴 2013.10.30 13438 0
목록
Board Pagination ‹ Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 34 Next ›
/ 34

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5