Я пытался отобразить только скрытые файлы, но не знаю, как это сделать.
Это работает (но сопоставление также точек в других местах)
ls -la | grep '\.'
Пытался добавить, ^
но не нашел решения.
ls -la | awk '$9 ~ /^\./'
воля.
Я пытался отобразить только скрытые файлы, но не знаю, как это сделать.
Это работает (но сопоставление также точек в других местах)
ls -la | grep '\.'
Пытался добавить, ^
но не нашел решения.
ls -la | awk '$9 ~ /^\./'
воля.
Ответы:
find . -type f -name '\.*' -print
Должно работать, если вы хотите перечислить каждый скрытый файл в иерархии каталогов.
Если вы хотите проанализировать ls
вывод, вы должны добавить ^
в начале регулярное выражение и не использовать -l
опцию. Использование -l
приводит к тому, что вывод каждой строки начинается с информации о правах доступа к файлу или папке, а не имени файла или папки. Так что вы должны использовать так:
ls -Ad | grep '^\.'
Или вы можете сделать с помощью printf
встроенного Bash:
printf "%s\n" .*
Если вы используете zsh
, вы можете использовать:
print -l .*
Вот два других способа найти только скрытые файлы.
find . -maxdepth 1 -name ".*" -type f -ls
или
find . -maxdepth 1 -name ".*" -type f -printf "%P \n"
Используйте, -maxdepth
чтобы указать, как далеко вы хотите искать в дереве каталогов.
Улучшение ответа Flup :
ls -lad .[!.]* ..?*
В этом списке будут перечислены все файлы, имена которых начинаются с точки и которые не являются .
ни ..
.
Обратите внимание, что если вы хотите передать вывод команды ls
to grep
(что, как указывает devnull , никогда не бывает хорошей идеей), убедитесь, что вы используете \ls
или command ls
потому что if ls
имеет псевдоним, чтобы показать вам цветной вывод (как, например, в Debian) , его вывод содержит escape-последовательности ANSI для создания цветного вывода, которое сработает, grep
если его шаблон закреплен в начале строки.
-A
(вместо -a
) , чтобы игнорировать .
, ..
.
-A
отличается от -a
для каталогов, ls
в которые попадают, но оба (в равной степени) игнорируются и бесполезны для имен, указанных в командной строке с -d
действующими. Кроме того, если ls
есть псевдоним, --color=auto
то все в порядке; только --color=always
или --color
вызывает проблемы.
Решение val0x00ff действительно хорошо, но оно забывает скрытые каталоги.
Если вы хотите скрытые файлы и скрытые каталоги , без. и .. :
find -maxdepth 1 -regex '\./\..+' -printf "%P\n"
find . \( -type f -o -type d \) -name '\.*' -print
; применять в maxdepth
случае необходимости.
Ниже один очень компактный и поддерживает много вариантов
1) Отображение скрытых файлов, каталогов и подкаталогов
find . | grep "^\./\."
2) Отображать только скрытые каталоги и подкаталоги
find . -type d | grep "^\./\."
3) Отображать скрытые файлы только в текущих и подкаталогах
find . -type f | grep "^\./\."
4) Показать скрытые файлы и каталоги в текущей папке
find . -maxdepth 1 | grep "^\./\."
Ты можешь попробовать:
find . -maxdepth 1 -type f -name '\.*' -print
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -print
Конечно, вы можете использовать разные maxdepth
значения или удалить его полностью. Очень полезно, если вы хотите исследовать каталоги ( -type d
) или обычные файлы ( type f
) или оба, и комбинировать с другими функциями, такими как:
(например, время последнего изменения, основанное на примере @piroux - дополнено @ jeroen-wiert-pluimers )
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -exec stat -c %y {} \; -printf "%P\t"
Ты можешь попробовать :
ls -a |grep -E "^\."
^ указывает, что это начало контента с регулярным выражением
ls
никогда не был прекрасной идеей, но то, что вы попробовали, сработало бы, если бы вы использовали якорь^
для обозначения начала матча.ls -la | grep '^\.'