
나는 이 문제에 대해 너무 오랫동안 머리를 긁적이어서 여기 누군가가 무엇이 잘못되고 있는지 볼 수 있을 것입니다. 스캐너에서 문서의 타임스탬프가 있는 파일로 스캔하는 명령을 작성하려고 합니다.
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M:%S).tiff
이로 인해 오류가 발생합니다.zsh: invalid argument: 2017.05.27-14:29:13.tiff
이상하게도 날짜 형식 문자열에서 초를 제거하면 오류가 발생하지 않지만 파일 이름도 제대로 지정되지 않습니다.
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M).tiff
2017.05.27-14
분과 .tiff 확장자가 누락된 이라는 파일이 생성됩니다 .
상황을 더욱 복잡하게 만드는 것은 삼바 공유가 아닐 때 이 모든 것이 완벽하게 작동하지만 삼바 공유에서 동일한 명령을 실행하면 오류가 발생한다는 것입니다. scanimage 대신 echo로 테스트하면 echo를 사용하면 예상대로 작동하므로 흥미로운 내용이 나타나지 않습니다.
답변1
문제는 콜론이었던 것으로 밝혀졌습니다. 내 삼바 공유는 콜론이 있는 파일 이름을 허용하지 않기 때문에 이 오류가 발생했습니다. 파일 이름에서 콜론을 제거하면 완벽하게 작동합니다.
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H.%M.%S).tiff
문서 스캔 및 정리를 위해 완성된 스크립트가 궁금하신 분은 여기를 참조하세요.
#!/bin/bash
finish="-1"
page=1
date=$(date +%Y.%m.%d-%H.%M.%S)
while [ "$finish" = '-1' ]; do
echo -e "\e[1m\e[32m==>\e[0m Scanning page $page..."
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $date-$page.tiff
while true; do
echo -en " \e[1m\e[34m->\e[0m More pages? [y/n] "
read answer
case $answer in
[Yy]* ) page=$((page+1)); break;;
[Nn]* ) finish="1"; break;;
* ) echo -e " \e[1m\e[34m->\e[0m Please answer tes or no.";;
esac
done
done
echo -e "\e[1m\e[32m==>\e[0m Converting $page page(s) to PDF..."
convert $date-*.tiff $date.pdf
echo -e "\e[1m\e[32m==>\e[0m Cleaning up..."
rm $date-*.tiff
난 그냥 아무 폴더(영수증, 의료 등)에 CD를 넣고 스캔 파일을 실행합니다. 결과는 현재 디렉터리에서 스캔된 모든 페이지의 타임스탬프가 포함된 PDF입니다.