Я намагався відображати лише приховані файли, але не знаю, як це зробити.
Це працює (але збіг крапок в інших місцях)
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
до grep
(що, як зазначає devnull , ніколи не є доброю ідеєю), переконайтеся, що ви використовуєте, \ls
або command ls
якщо якщо він ls
є псевдонімом, то ви побачите кольоровий вихід (як це, наприклад, на Debian) , його вихід містить послідовності відходу 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 "^\."
^ вказує, що це початок вмісту з regexp
ls
ніколи не є чудовою ідеєю, але те, що ви намагалися, спрацювало б, якби ви використовували якір^
для позначення початку матчу.ls -la | grep '^\.'