Как отфильтровать скрытые файлы и каталоги в "найти"?
Я хотел бы перечислить все не скрытые файлы и каталоги в моем пути.
Это означает, что файлы, начинающиеся с .
следует исключить из результата вместе с файлами, путь к которым содержит скрытый каталог:
foo/bar/.bazz.rc # Exclude
foo/.bar/bazz.rc # Exclude
Как я могу это сделать? Я пробовал:
find -maxdepth 2 -not -iname "*/.*"
Но у меня все еще есть скрытые файлы в моих результатах.
2 ответа
Избежать точки и использовать path
вместо iname
:
find . -not -path "*/\.*"
*
- любой префикс/
- каталог / разделитель файлов\.
- сбежал.
,*
- любой суффикс
Вы также можете сделать наоборот и сопоставить их. Это позволяет
find
чтобы сократить, что предотвращает спуск в совпадающие каталоги, это может значительно ускорить ваш поиск.
find -path '*/.*' -prune -o -print
Явное использование
-print
с правой стороны печатаются только несоответствующие объекты, в данном случае видимые файлы и папки.