Я пытался отобразить только скрытые файлы, но не знаю, как это сделать.
Это работает (но сопоставление также точек в других местах)
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 .[!.]* ..?*
В этом списке будут перечислены все файлы, имена которых начинаются с точки и которые не являются .ни ...
Обратите внимание, что если вы хотите передать вывод команды lsto 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 '^\.'