제품의 일부로 여러 스크립트가 제공됩니다.
스크립트 중 하나에서 작동하지 않는 다음 줄을 발견했습니다.
find . -name *.old -type f -mtime +7 | xargs compress -f
file
*.old 파일 중 하나에서 명령을 실행하면 다음과 같은 결과가 나타납니다.ASCII text, with very long lines
무엇을 할 수 있는지 제안해 주실 수 있나요?
답변1
이 명령의 출력은 명령 시퀀스가 실패한 이유와 관계가 없습니다 file
.file
원래 명령의 출력 외에도 find
가장 흥미로운 것은 다음의 출력입니다.
find . -name *.old -type f -mtime +7
에코된 파일 이름이 없으면 compress
인수 없이 호출되므로 표준 입력을 기다립니다. 파일 이름에 공백이 있는 경우 xargs
파일을 압축할 때 문제가 발생할 수도 있습니다 .
최소한 다음과 같이 변경해 보아야 합니다.
find . -name "*.old" -type f -mtime +7 -print0 | xargs -0 --no-run-if-empty compress -f
OP 의견을 기반으로 업데이트하면 다음과 같습니다.
find . -name "$FILE" -type f $ACTION_TYPE +$PARAM -print0 | xargs -0 --no-run-if-empty compress -f
for는 공백이 포함된 파일 이름이 압축에 올바르게 전달되도록 -print0
합니다 find
. -0
파일이 전혀 발견되지 않으면 실행이 차단
됩니다 .--no-run-if-empty
xargs
compress