Поиск по сайту:
Хорошего человека должно быть много (Ю. Поляков).

Отображать только скрытые файлы в Linux

01.07.2022
Отображать только скрытые файлы в Linux

Отображение скрытых файлов в Linux довольно просто. Вы используете команду ls следующим образом:

ls -a

 

Это нормально. Вы можете увидеть скрытые файлы, имена которых начинаются с точки (.).

Но вы видите все файлы в текущем каталоге, скрытые и обычные.

Что, если вы хотите видеть ТОЛЬКО скрытые файлы, а не обычные?

Нет готового к использованию варианта, как -a и -A. Тем не менее, вы всегда можете найти способ добиться чего-то, объединив несколько команд с помощью перенаправления конвейера.

 

Отображать только скрытые файлы и каталоги

Чтобы отобразить только скрытые файлы и каталоги, самый простой подход — отобразить скрытые файлы с помощью ls -a, а затем использовать grep для фильтрации только тех записей, которые начинаются с . (точка).

ls -a | grep "^\."

 

^ означает «начать с». Символ точки необходимо экранировать с помощью \, а поскольку вы использовали специальные символы, все заключено в двойные кавычки. С помощью «^\.» вы указываете команде grep отображать только результаты, начинающиеся с точки.

Позвольте нам поделиться примером. Вот содержимое нашего примера каталога:

andreyex@destroyer:~/toto$ ls -l
total 352
-rw-rw-r-- 1 andreyex andreyex  45443 May 24 09:03 apt-get.pdf
-rw-rw-r-- 1 andreyex andreyex  29983 May 27 16:07 bash.pdf
-rw-rw-r-- 1 andreyex andreyex 249773 May 26 14:56 cronjob-cheatsheet.png
-rw-rw-r-- 1 andreyex andreyex   4943 Jun  2 20:09 gnome-console-voiceover
-rw-rw-r-- 1 andreyex andreyex  12721 May 29 12:29 members.2022-05-29.csv
-rw-rw-r-- 1 andreyex andreyex    143 May 30 12:06 routes.yaml

 

Читать  Совместима ли Linux с POSIX?

Теперь мы собираемся отфильтровать его, чтобы отображались только скрытые файлы и каталоги:

andreyex@destroyer:~/toto$ ls -a | grep "^\."
.
..
.hidden-file
.hid_dir
.member.csv

 

Он показывает спец. (текущий каталог) и .. (родительский каталог). Вы можете отфильтровать их, используя опцию -A вместо -a.

andreyex@destroyer:~/toto$ ls -A | grep "^\."
.hidden-file
.hid_dir
.member.csv

 

Здесь все еще есть небольшая проблема. Хотя вы можете видеть их в отдельных строках, вы не можете различить, файл это или каталог.

Если вы этого хотите, есть другой способ добиться этого.

 

Альтернативный метод

Чтобы показать только скрытые файлы и каталоги в формате длинного списка (чтобы вы могли видеть, является ли это файлом или каталогом), вы можете использовать это:

ls -ld .*

 

Это покажет следующий результат для примера здесь:

drwxrwxr-x  3 andreyex andreyex  4096 Jun 30 10:38 .
drwxr-x--- 28 andreyex andreyex  4096 Jun 29 15:15 ..
-rw-rw-r--  1 andreyex andreyex 41145 May 27 15:24 .hidden-file
drwxrwxr-x  2 andreyex andreyex  4096 Jun 30 10:38 .hid_dir
-rw-rw-r--  1 andreyex andreyex 12721 Jun  3 09:41 .member.csv

 

Как это работает? Во-первых, часть .* является подстановкой оболочки. Он расширяется прямо на входе. Итак, в основном, вы можете думать об этом как:

ls -ld . .. .hidden-file .hid_dir .member.csv

Здесь важно использование вариант -d. Он говорит ls отображать только каталог, а не его содержимое. В противном случае команда ls также покажет содержимое файла .hid_dir.

 

Если вы не хотите отображать файл . и .., вы можете использовать команду ls следующим образом:

ls -ld .!(|.)

 

Читать  Bash. Циклы в Bash

Сосредоточившись на части .!(|.), очевидно. Это закономерность .! является отрицанием и|ИЛИ состояние .(|.) ничего не означает или точка. Когда вы отрицаете это с помощью !, вы говорите, что это не должно быть «ничего» или точка. Объедините все это вместе .!(|.), и вы говорите шаблон, где . за которым следует что-то (таким образом, одна точка исключается), кроме другой точки (таким образом, исключаются двойные точки).

Вы получаете желаемый результат прямо сейчас:

-rw-rw-r-- 1 andreyex andreyex 41145 May 27 15:24 .hidden-file
drwxrwxr-x 2 andreyex andreyex  4096 Jun 30 10:38 .hid_dir
-rw-rw-r-- 1 andreyex andreyex 12721 Jun  3 09:41 .member.csv

Отображать только скрытые файлы (не скрытые каталоги)

Отображение только скрытых файлов без скрытых каталогов довольно просто. Использовать это:

ls -ld .* |grep -v ^d

 

Вы отображаете как скрытые файлы, так и каталоги, а затем отфильтровываете записи, начинающиеся с d (которые являются каталогами).

andreyex@destroyer:~/toto$ ls -ld .* 
drwxrwxr-x  3 andreyex andreyex  4096 Jun 30 10:38 .
drwxr-x--- 28 andreyex andreyex  4096 Jun 29 15:15 ..
-rw-rw-r--  1 andreyex andreyex 41145 May 27 15:24 .hidden-file
drwxrwxr-x  2 andreyex andreyex  4096 Jun 30 10:38 .hid_dir
-rw-rw-r--  1 andreyex andreyex 12721 Jun  3 09:41 .member.csv
andreyex@destroyer:~/toto$ ls -ld .* |grep -v ^d
-rw-rw-r--  1 andreyex andreyex 41145 May 27 15:24 .hidden-file
-rw-rw-r--  1 andreyex andreyex 12721 Jun  3 09:41 .member.csv

 

Конечно, может быть несколько других возможных способов. Для таких вещей всегда есть команда find.

Если вы можете придумать другое решение, поделитесь им в разделе комментариев.

Читать  Как показать номера строк в Vim

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Почему сигары Backwoods такие дорогие Сигары Backwoods - это высококачественные…

Спасибо!

Теперь редакторы в курсе.