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표준 출력에 파일 이름을 쓰는 동안 이를 단독으로 사용하여 파일을 삭제할 수 있습니다 .

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

노트:-delete옵션의 순서가 -print중요합니다. 두 번째 옵션은 첫 번째 옵션이 true를 반환하는 경우에만 적용됩니다. 즉, 첫 번째 -delete옵션이 파일 삭제에 실패하면 해당 이름이 표준 출력에 인쇄되지 않습니다. 앞에 넣으면 파일이 실제로 삭제될 수 -print있는지 여부에 관계없이 파일 이름을 표준 출력에 넣습니다 .-delete

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

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

관련 정보