Как отфильтровать скрытые файлы и каталоги в "найти"?

Я хотел бы перечислить все не скрытые файлы и каталоги в моем пути.

Это означает, что файлы, начинающиеся с . следует исключить из результата вместе с файлами, путь к которым содержит скрытый каталог:

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с правой стороны печатаются только несоответствующие объекты, в данном случае видимые файлы и папки.

Другие вопросы по тегам