![xargs -0 rm을 어떻게 기록합니까?](https://rvso.com/image/76409/xargs%20-0%20rm%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EA%B8%B0%EB%A1%9D%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
특정 확장자의 파일을 재귀적으로 찾아서 삭제해야 하는 간단한 방법이 있습니다. 따라서 파일을 찾아서 제거하고 에 파이프하는 구문이 있지만 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
유틸리티에서 기본적으로 정규식이 작동하도록 하려면 대괄호와 수직선을 이스케이프 처리해야 했습니다. 또는 예를 들어 -regextype
to 로 지정할 수도 있습니다 posix-egrep
. 어쨌든 옵션 find
없이 명령을 먼저 시도하여 -delete
파일을 올바르게 찾는지 확인하는 것이 좋습니다 .
find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print