당신은 실제로 배관된다 rm
의 출력 의 입력에 find
. 당신이 원하는 것은의 출력을 사용하는 find
등의 인수 로를 rm
:
find -type f -name '*.sql' -mtime +15 | xargs rm
xargs
표준 입력을 다른 프로그램의 인수로 "변환"하거나 man
페이지 에보다 정확하게 입력 할 수있는 명령입니다 .
표준 입력에서 명령 행 작성 및 실행
파일 이름에 공백 문자가 포함될 수 있으면 다음을 수정해야합니다.
find -type f -name '*.sql' -mtime +15 -print0 | xargs -0 rm
그러나 실제로 find
이것에 대한 지름길이 있습니다 : -delete
옵션 :
find -type f -name '*.sql' -mtime +15 -delete
다음과 같은 경고에 유의하십시오 man find
.
Warnings: Don't forget that the find command line is evaluated
as an expression, so putting -delete first will make find try to
delete everything below the starting points you specified. When
testing a find command line that you later intend to use with
-delete, you should explicitly specify -depth in order to avoid
later surprises. Because -delete implies -depth, you cannot
usefully use -prune and -delete together.
PS 표준 입력에서 파일 이름을 기대하지 않기 rm
때문에 직접 파이핑 하는 것은 옵션 rm
이 아닙니다. 현재하고있는 일은 뒤로 파이핑하는 것입니다.