find
다음을 사용하여 파일 목록을 얻으려고합니다.
find . \( -iname @eaDir -o -iname .DS_Store -o -iname Thumbs.db \) -prune -o -mtime -25 -type f -printf "%P\n"
이것은 잘 작동합니다.
그러나 위 명령의 출력을 파일로 리디렉션하려고 하면 후자는 비어 있습니다.
FILES_TO_BACKUP=/tmp/__$$_myfiles.lst
find . \( -iname @eaDir -o -iname .DS_Store -o -iname Thumbs.db \) -prune -o -mtime -25 -type f -printf "%P\n" > $FILES_TO_BACKUP
이유를 아는 사람 있나요?
답변1
스크립트에서 호출하고 명령줄에서 실행하는 사이에 사용자 등을 변경하고 있습니까? 그렇다면 PATH가 변경되었을 수 있으며 다른 조회가 수행되고 있는 것입니다.
이와 같은 특정 문제의 경우, 나는 종종 "strace"와 함께 명령을 실행하여 어떻게 다른지 확인합니다.
귀하가 제공한 두 호출과 어떤 차이도 알 수 없습니다. 스크립트에서 두 번째 호출을 실행하고 있다는 힌트가 있을 수 있으므로 차이점이 있을 수 있습니다. 둘 다 전에 "pwd"를 실행하여 동일한 위치에서 실행되고 있는지 확인하고 "찾는 것"도 도움이 될 수 있습니다.