Отображение скрытых файлов в Linux довольно просто.
Вы используете команду ls следующим образом:
1 | ls -a |
Все в порядке. Вы видите скрытые файлы, имена которых начинаются с точки (.). Но вы видите все файлы в текущем каталоге, скрытые и обычные.
Что если вы хотите видеть ТОЛЬКО скрытые файлы, а не обычные?
Здесь нет готовой к использованию опции, подобной -a и -A. Однако вы всегда можете найти способ добиться желаемого, объединив несколько команд с помощью замечательного перенаправления pipe.
Отображение только скрытых файлов и каталогов
Чтобы отобразить только скрытые файлы и каталоги, самый простой подход - показать скрытые файлы с помощью ls -a, а затем использовать grep для фильтрации только тех записей, которые начинаются с . (точка).
1 | ls -a | grep "^\". |
Символ ^ означает "начинается с". Символ точки должен быть экранирован с помощью \, а поскольку вы использовали специальные символы, все заключено в двойные кавычки. С помощью "^\." вы указываете команде grep показывать только результаты, начинающиеся с точки.
Альтернативный метод
Чтобы показать только скрытые файлы и каталоги в формате длинного списка (чтобы вы могли видеть, файл это или каталог), вы можете использовать следующее:
1 | ls -ld .* |
Как это работает? Во-первых, часть .* - это shell globbing. Она расширяется прямо на вводе. Так что, в принципе, вы можете думать об этом как:
ls -ld ... .hidden-file .hid_dir .member.csv
Здесь важно использовать опцию -d. Она указывает ls перечислить только каталог, а не его содержимое. В противном случае команда ls покажет и содержимое .hid_dir.
Если вы не хотите отображать каталоги . и .., вы можете использовать команду ls следующим образом:
1 | ls -ld .!(|.) |
Фокусируясь на части .!(|.), очевидно. Это шаблон. ! - это отрицание, а | - условие OR. (|.) означает ничто или точку. Когда вы отрицаете его с помощью !, вы говорите, что это не должно быть "ничего" или точка. Соедините все это вместе .!(|.) и вы получите шаблон, в котором за . следует что-то (таким образом, одиночная точка исключается), кроме другой точки (таким образом, исключается двойная точка).
Отображение только скрытых файлов (не скрытых каталогов)
Отобразить только скрытые файлы без скрытых каталогов довольно просто. Используйте следующее:
1 | ls -ld .* |grep -v ^d |
Вы отображаете и скрытые файлы, и каталоги, а затем отфильтровываете записи, начинающиеся с d (которые являются каталогами).
Конечно, может быть несколько других возможных способов.
Спасибо конструкцию, разобрался, главное теперь не забыть и написал свою конструкцию для подсчета без верхних и нижних каталогов, которые не нужны для подсчетов.
ls -aA | grep "^\."
ну и можно это отправить в подсчитыватель, добавив
| wc -l
Спасибо за обратную связь)