відображати лише файли, починаючи з. (приховано)


11

Я намагався відображати лише приховані файли, але не знаю, як це зробити.

Це працює (але збіг крапок в інших місцях)

ls -la | grep '\.'

Спробували додати, ^але не знайшли рішення.


1
Парсінг lsніколи не є чудовою ідеєю, але те, що ви намагалися, спрацювало б, якби ви використовували якір ^для позначення початку матчу. ls -la | grep '^\.'
devnull

3
Ні, це не буде, ім'я файлу не є початком рядка зі значком -l. ls -la | awk '$9 ~ /^\./'буде.
yoonix

Відповіді:



5
find . -type f -name '\.*' -print 

Потрібно працювати, якщо ви хочете перерахувати всі приховані файли в ієрархії каталогів.


2

Якщо ви хочете проаналізувати lsвихід, ви повинні додати ^на початку регулярного вираження та не використовувати -lопцію. Використання -lпризводить до того, що кожен рядок виводу починається з інформації про дозвіл файлу чи папки, а не з імені файлу чи папки. Тож вам слід користуватися так:

ls -Ad | grep '^\.'

Або ви можете зробити з printfbash вбудованим:

printf "%s\n" .*

Якщо ви використовуєте zsh, ви можете використовувати:

print -l .*

1

Ось два інші способи пошуку лише прихованих файлів.

find . -maxdepth 1 -name ".*" -type f -ls

або

find . -maxdepth 1 -name ".*" -type f -printf "%P \n"

Використовуйте, -maxdepthщоб вказати, як далеко ви хочете шукати в дереві каталогів.


1

Покращення відповіді Flup :

ls -lad .[!.]* ..?*

У цьому списку будуть перераховані всі файли, ім’я яких починається з крапки, а це ні, .ні ...

Зауважте, що якщо ви хочете передати висновок lsдо grep(що, як зазначає devnull , ніколи не є доброю ідеєю), переконайтеся, що ви використовуєте, \lsабо command lsякщо якщо він lsє псевдонімом, то ви побачите кольоровий вихід (як це, наприклад, на Debian) , його вихід містить послідовності відходу ANSI для створення кольорового виводу, який збільшить ваш вихід, grepякщо його шаблон буде прикріплений на початку рядка.


1
Ви можете використовувати -A(замість -a) , щоб ігнорувати ., ...
OJFord

@ OJFord + -Aвідрізняється від -aдля каталогів, які lsспускаються в, але обидва (однаково) ігноруються та марні для імен, зазначених у командному рядку, що -dдіють. Крім того, якщо lsце чуже, --color=auto тоді трубопровід добре; тільки --color=alwaysабо --colorспричиняє неприємності.
dave_thompson_085

0

Рішення val0x00ff дійсно добре, але воно забуває приховані каталоги.

Якщо ви хочете приховані файли та приховані каталоги , без них. і ..:

find -maxdepth 1 -regex '\./\..+' -printf "%P\n"

Ваша пропозиція не спрацьовує на 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 | grep "^\./\."


0

Ви можете спробувати:

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"

-1

Ви можете спробувати :

ls -a |grep -E  "^\."

^ вказує, що це початок вмісту з regexp


1
Дублікат іншої відповіді 3 роки тому ...
Джефф Шаллер

Я бачив попередню відповідь, вона не дублюється, і, безумовно, "ls -a" та "ls -Ad" не мають однакового значення. "-a" означає список усіх, включаючи файли / каталоги, починається з ". -А означає перелік усіх, крім "." , ".." та вміст каталогів.
Lingjing France
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.