Печать из командной строки

Пожалуйста, кто-нибудь может объяснить, что именно делают эти команды и опции:

find /home/mike/Duck/ -type f -iname '*.txt' -print 0 | while IFS= read -r -d '' f;
 do lpr "$f" && mv "$f" /home/mike/Duck/printed/ ; done

и что, если я хочу напечатать все расширения в этом каталоге, что мне делать?

1
задан 24 May 2015 в 03:52

1 ответ

Фрагмент кода, который Вы дали, требует модификации, Вам нужно -print0 вместо print 0.

Этот сценарий найдет (find) все файлы, имеющие расширение txt в /home/mike/Duck/, отправьте их на принтер (lpr) по одному и затем если это возвращает успех (&&) затем файл будет перемещен (mv) к /home/mike/Duck/printed/.

Если Вы хотите распечатать файлы, имеющие какие-либо расширения, используйте это:

find /home/mike/Duck/ -type f -name '*.*' -print0 | while IFS= read -r -d '' f;
 do lpr "$f" && mv -i "$f" /home/mike/Duck/printed/ ; done

Это предполагает, что все файлы, имеющие расширения, находятся в формате file.ext, это также распечатает файлы, имеющие несколько точек. -i с mv даст Вам подсказку перед перезаписью.

Также обратите внимание, что это может быть сделано с помощью только find:

find /home/mike/Duck/ -type f -name '*.*' -exec lpr {} \; -exec mv -i {} /home/mike/Duck/printed/ \;
4
ответ дан 24 May 2015 в 03:52

Другие вопросы по тегам:

Похожие вопросы: