Пожалуйста, кто-нибудь может объяснить, что именно делают эти команды и опции:
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
и что, если я хочу напечатать все расширения в этом каталоге, что мне делать?
Фрагмент кода, который Вы дали, требует модификации, Вам нужно -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/ \;