2015-01-21 5 views
2

아래 find 명령으로 파일을 삭제하려고 시도했지만 일부 파일이 삭제되지 않고 filname.123.log와 같은 파일 이름이 있습니다.xargs 명령을 사용하여 유닉스에서 도움이 필요함

내가 이름을 바꿀 수 없습니다 또는 파일 이름에 어떤 일을 할 수는 명령

$ find /BASE/CODE/LOGS_BACK -type f -mtime +60 | xargs rm -f 
xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option 

내가 봤을 삭제하고 아래 명령을 시도 할 필요가 있지만, 다른 오류를주고있다.

$ find /BASE/CODE/LOGS_BACK -type f -mtime +60 | xargs -0 rm -f 
xargs: argument line too long 

이 문제와 관련하여 도움을 주시기 바랍니다.

답변

0

사용 -0 xargs를에서 옵션을 찾기에 -print0 옵션을 사용하여 의미

찾기/BASE/CODE/LOGS_BACK 타입 F -mtime +60 -print0 | xargs -0 rm -f

그러면 모든 검색 결과는 '\ 0'NUL char로 끝나고 xargs는 동일한 문자로 구문 분석하여 목록을 올바르게 재생성합니다.

0

find 직접 각 결과에 대한 명령을 실행할 수

$ find /BASE/CODE/LOGS_BACK -type f -mtime +60 -exec rm -f {} \; 

{} 각 매칭 파일 이름으로 대체된다. \; 명령을 종료하십시오.

find /BASE/CODE/LOGS_BACK -type f -mtime +60 -exec rm -f {} + 

참고가 xargs과 같은 작업을 수행 + 종료 :

0

이것은 당신이 원하는 것을 달성하기 위해 가장 빠른 방법입니다.