Я намагався відображати лише приховані файли, але не знаю, як це зробити.
Це працює (але збіг крапок в інших місцях)
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 '^\.'
Або ви можете зробити з printfbash вбудованим:
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 '^\.'