lpr
распечатывает, что ему отправляют через STDIN. Поэтому вам нужно вызывать lpr
для каждого файла, найденного с помощью find:
find . -type f ! -name ".*" -print0 | xargs -0 lpr
-type f
ищет файлы
!
логично нет, следовательно ! -name ".*"
пропустит скрытые файлы (с некоторой помощью из https://superuser.com/a/101012/195224)
-print0
разделяет отдельные имена файлов с \0
так что это также будет работать с именами файлов с пробелами в нем.
xargs
выполняет lpr
со списком имен файлов, которые он получает (-0
снова говорит, что \0
используется в качестве разделителя).
Эта команда выведет список не только точечных файлов, но и файлов с точечными каталогами.
Если вы также хотите исключить dotdirs, расширьте команду find
до
find . -type f ! -regex ".*/\..*" ! -name ".*"
И, наконец, поскольку у некоторых версий lpr
, очевидно, есть проблема с пустыми файлами, пропустите их также:
find . -type f ! -regex ".*/\..*" ! -name ".*" ! -empty
Как примечание: чтобы получить более качественный макет вашей распечатки (включая имя файла), вы должны заменить lpr
на a2ps
.