Разбор lsникогда не был прекрасной идеей, но то, что вы попробовали, сработало бы, если бы вы использовали якорь ^для обозначения начала матча. ls -la | grep '^\.'
devnull
3
Нет, это не так, имя файла не является началом строки с флагом -l. ls -la | awk '$9 ~ /^\./'воля.
Если вы хотите проанализировать lsвывод, вы должны добавить ^в начале регулярное выражение и не использовать -lопцию. Использование -lприводит к тому, что вывод каждой строки начинается с информации о правах доступа к файлу или папке, а не имени файла или папки. Так что вы должны использовать так:
ls -Ad | grep '^\.'
Или вы можете сделать с помощью printfвстроенного Bash:
В этом списке будут перечислены все файлы, имена которых начинаются с точки и которые не являются .ни ...
Обратите внимание, что если вы хотите передать вывод команды lsto grep(что, как указывает devnull , никогда не бывает хорошей идеей), убедитесь, что вы используете \lsили command lsпотому что if lsимеет псевдоним, чтобы показать вам цветной вывод (как, например, в Debian) , его вывод содержит escape-последовательности ANSI для создания цветного вывода, которое сработает, grepесли его шаблон закреплен в начале строки.
Вы можете использовать -A(вместо -a) , чтобы игнорировать ., ...
OJFord
@ OJFord + -Aотличается от -aдля каталогов, lsв которые попадают, но оба (в равной степени) игнорируются и бесполезны для имен, указанных в командной строке с -dдействующими. Кроме того, если lsесть псевдоним, --color=auto то все в порядке; только --color=alwaysили --colorвызывает проблемы.
dave_thompson_085
0
Решение val0x00ff действительно хорошо, но оно забывает скрытые каталоги.
Если вы хотите скрытые файлы и скрытые каталоги , без. и .. :
Ваше предложение не работает в VMware ESXi (не указывать ни файлов, ни каталогов), и в Linux тоже происходит сбой (с maxdepth> 1, в нем также перечислены все файлы в каталоге, начинающемся с.), Но это работает как в Linux, так и в ESXi: find . \( -type f -o -type d \) -name '\.*' -print; применять в maxdepthслучае необходимости.
Йерун Виерт Плюмерс
0
Ниже один очень компактный и поддерживает много вариантов
1) Отображение скрытых файлов, каталогов и подкаталогов
find . | grep "^\./\."
2) Отображать только скрытые каталоги и подкаталоги
find . -type d | grep "^\./\."
3) Отображать скрытые файлы только в текущих и подкаталогах
find . -type f | grep "^\./\."
4) Показать скрытые файлы и каталоги в текущей папке
find .-maxdepth 1-type f -name '\.*'-print
find .-maxdepth 1 \( -type f -o -type d \) -name '\.*'-print
Конечно, вы можете использовать разные maxdepthзначения или удалить его полностью. Очень полезно, если вы хотите исследовать каталоги ( -type d) или обычные файлы ( type f) или оба, и комбинировать с другими функциями, такими как:
Я видел предыдущий ответ, он не повторяется, и определенно "ls -a" и "ls -Ad" не имеют одинакового значения. «-a» означает, что список всех файлов, включая каталоги, начинается с «.» -А означает список всего, кроме "." , ".." и содержимое каталога.
ls
никогда не был прекрасной идеей, но то, что вы попробовали, сработало бы, если бы вы использовали якорь^
для обозначения начала матча.ls -la | grep '^\.'
ls -la | awk '$9 ~ /^\./'
воля.Ответы:
ls -ld .*
будет делать то, что вы хотите.источник
Должно работать, если вы хотите перечислить каждый скрытый файл в иерархии каталогов.
источник
Если вы хотите проанализировать
ls
вывод, вы должны добавить^
в начале регулярное выражение и не использовать-l
опцию. Использование-l
приводит к тому, что вывод каждой строки начинается с информации о правах доступа к файлу или папке, а не имени файла или папки. Так что вы должны использовать так:Или вы можете сделать с помощью
printf
встроенного Bash:Если вы используете
zsh
, вы можете использовать:источник
Вот два других способа найти только скрытые файлы.
или
Используйте,
-maxdepth
чтобы указать, как далеко вы хотите искать в дереве каталогов.источник
Улучшение ответа Flup :
В этом списке будут перечислены все файлы, имена которых начинаются с точки и которые не являются
.
ни..
.Обратите внимание, что если вы хотите передать вывод команды
ls
togrep
(что, как указывает devnull , никогда не бывает хорошей идеей), убедитесь, что вы используете\ls
илиcommand ls
потому что ifls
имеет псевдоним, чтобы показать вам цветной вывод (как, например, в Debian) , его вывод содержит escape-последовательности ANSI для создания цветного вывода, которое сработает,grep
если его шаблон закреплен в начале строки.источник
-A
(вместо-a
) , чтобы игнорировать.
,..
.-A
отличается от-a
для каталогов,ls
в которые попадают, но оба (в равной степени) игнорируются и бесполезны для имен, указанных в командной строке с-d
действующими. Кроме того, еслиls
есть псевдоним,--color=auto
то все в порядке; только--color=always
или--color
вызывает проблемы.Решение val0x00ff действительно хорошо, но оно забывает скрытые каталоги.
Если вы хотите скрытые файлы и скрытые каталоги , без. и .. :
источник
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 "^\./\."
источник
Ты можешь попробовать:
Конечно, вы можете использовать разные
maxdepth
значения или удалить его полностью. Очень полезно, если вы хотите исследовать каталоги (-type d
) или обычные файлы (type f
) или оба, и комбинировать с другими функциями, такими как:(например, время последнего изменения, основанное на примере @piroux - дополнено @ jeroen-wiert-pluimers )
источник
Ты можешь попробовать :
^ указывает, что это начало контента с регулярным выражением
источник