Используя GNU find
, вы можете вызвать:
find /some/dir -mindepth 1 -maxdepth 1 -type f \
\( -executable -printf 'X%p\0' -o -printf 'F%p\0' \) -o \
-type d -printf 'D%p\0'
Результатом будет NUL-разделитель ( NUL - единственный символ, который может не появляться в пути к файлу) список записей, первая буква которого определяет тип ( X
, F
, D
для исполняемых обычных файлов, других обычных файлов, каталогов).
Для символических ссылок, если вы хотите вместо этого учитывать тип цели символической ссылки, используйте -xtype
вместо -type
выше. -executable
возвращает файлы, которые могут быть выполнены процессом, выполняющим эту команду поиска. Другие типы файлов (FIFO, сокеты, двери, устройства ...) игнорируются. . Записи каталога
и ..
также игнорируются.
Ну, согласно https://bugzilla.redhat.com/show_bug.cgi?id=1416532, это ошибка в RHEL7.3, это была именно та версия, которую мы использовали.
Исправлено в ядре ядра -3.10.0 -562.el7.