2015/11/21

xargs 사용법 (Update:20151122)

http://kiros33.blog.me/130140792483


Revision History 
2015/05/17 23:47:22 - 문서 포맷 변경
2015/11/22 12:30:17 - 디렉토리 이름을 파일명 앞에 추가하는 방법


>>>>> 전달값 처리 한번에
   
$ svn status --no-ignore | egrep "^[I?]" | cut -c9- | xargs echo rm
rm lib lte_rrc/tools/advlogger/src/bin lte_rrc/tools/advlogger/src/include lte_rrc/tools/advlogger/src/lib lte_rrc/rrc/asn/lib/libasn1rt.a lte_rrc/rrc/asn/lib/libasn1per.a lte_rrc/sctp/sctp/algos/arAdler/obj lte_rrc/sctp/sctp/algos/arCRC/obj lte_rrc/sctp/sctp/algos/Crypto/algo/md5/obj mac/maccore/bin/scheduler/DRXManager mac/maccore/bin/scheduler/MeasGapHandler simulators/protocolSimulatorTool/build/i686-debug simulators/protocolSimulatorTool/bin/.mark
  
  
>>>>> 전달값 처리 각각

-n num : max-args
-l num : max-lines 
svn status --no-ignore | egrep "^[I?]" | cut -c9- | xargs -n1 echo rm
rm lib
rm lte_rrc/rrc/asn/lib/libasn1rt.a
rm lte_rrc/rrc/asn/lib/libasn1per.a
rm lte_rrc/sctp/sctp/algos/arAdler/obj
rm lte_rrc/sctp/sctp/algos/arCRC/obj
rm lte_rrc/sctp/sctp/algos/Crypto/algo/md5/obj
rm lte_rrc/tools/advlogger/src/lib
rm lte_rrc/tools/advlogger/src/bin
rm lte_rrc/tools/advlogger/src/include
rm mac/maccore/bin/scheduler/DRXManager
rm mac/maccore/bin/scheduler/MeasGapHandler
rm simulators/protocolSimulatorTool/bin/.mark
rm simulators/protocolSimulatorTool/build/i686-debug

    
>>>>> replace를 사용해 전달값 위치 변경

svn status --no-ignore | egrep "^[I?]" | cut -c9- | xargs -I {} echo rm {} -rf
rm lib -rf
rm lte_rrc/tools/advlogger/src/include -rf
rm lte_rrc/tools/advlogger/src/lib -rf
rm lte_rrc/tools/advlogger/src/bin -rf
rm lte_rrc/rrc/asn/lib/libasn1rt.a -rf
rm lte_rrc/rrc/asn/lib/libasn1per.a -rf
rm lte_rrc/sctp/sctp/algos/arAdler/obj -rf
rm lte_rrc/sctp/sctp/algos/arCRC/obj -rf
rm lte_rrc/sctp/sctp/algos/Crypto/algo/md5/obj -rf
rm mac/maccore/bin/scheduler/DRXManager -rf
rm mac/maccore/bin/scheduler/MeasGapHandler -rf
rm simulators/protocolSimulatorTool/build/i686-debug -rf
rm simulators/protocolSimulatorTool/bin/.mark -rf

     
>>>>> multiple commands

동시에 여러개의 명령을 처리할 수 있도록 세미콜론(;)으로 구분해서 명령 지정 
xargs -I{} sh -c '{ echo command1 {} ; echo command2 {} ; }'

     
>>>>> handling variable

내부 로컬 변수를 선언해서 사용하는 방법, 복잡한 문자열 처리 같은 경우 단일 명령으로 처리가 불가능할 때 변수화 해서 사용할 수 있음
ls -1 | xargs -I{} echo $(export var='{}'; printf "%s" "$var "; echo grep -c "'$var'" tags;)


>>>>> 디렉토리 이름을 파일명 앞에 추가하는 방법
     
파일명과 디렉토리명에 공백이 있는 경우에도 정상 동작하도록 되어있습니다.
bash의 "파일이름에서 이름과 확장자를 분리하는 방법" 과 "아포스트로피(apostrophe)(') 중복 사용" 참고
ls -1 *.jpg | xargs -I{} bash -c 'mv "${0}" "$(basename "$PWD")-$(basename "${0}" .jpg).jpg"' {}



검색 : Linux, 리눅스, xargs, Command, 명령, Example, 예 예제, Sample, 샘플, Usage, 용법, 사용법,

댓글 없음:

댓글 쓰기