xargs -0 rm을 어떻게 기록합니까?

xargs -0 rm을 어떻게 기록합니까?

특정 확장자의 파일을 재귀적으로 찾아서 삭제해야 하는 간단한 방법이 있습니다. 따라서 파일을 찾아서 제거하고 에 파이프하는 구문이 있지만 xargs -0 rm제거된 파일의 로그를 생성할 수 없는 것 같습니다.

내가 지금까지 가지고 있는 것:

find /var/www/html -type f -regex ".*/.*\.(png|jpg)" -print0 |xargs -0 rm

답변1

rm파일을 삭제할 때 일반적으로 조용합니다. 제거된 파일을 표시하는 로그를 생성하려면 -v옵션을 추가하세요. 따라서 다음을 교체하십시오.

xargs -0 rm

와 함께:

xargs -0 rm -v >log

답변2

find자체를 사용하여 파일을 삭제하는 동시에 파일 이름을 stdout에 쓸 수 있습니다 .

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -delete -print >logfile

메모:순서 -delete-print옵션이 중요합니다. 두 번째 옵션은 첫 번째 옵션이 true를 반환하는 경우에만 적용됩니다. 즉, 첫 번째 -delete옵션이 파일을 삭제할 수 없으면 해당 이름이 stdout에 인쇄되지 않습니다. 먼저 넣으면 파일을 실제로 삭제할 수 -print있는지 여부에 관계없이 파일 이름을 stdout에 넣습니다 .-delete

노트 2: 시스템 find유틸리티에서 기본적으로 정규식이 작동하도록 하려면 대괄호와 수직선을 이스케이프 처리해야 했습니다. 또는 예를 들어 -regextypeto 로 지정할 수도 있습니다 posix-egrep. 어쨌든 옵션 find없이 명령을 먼저 시도하여 -delete파일을 올바르게 찾는지 확인하는 것이 좋습니다 .

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print

관련 정보