Без учета . и .. из результатов поиска и ls

Есть ли способ предотвратить find и ls -l из списка . и .. в их результатах? Я никогда не забочусь о том, чтобы увидеть этот результат в выходе, и это мешает мне эффективно передавать их вывод в wc -l чтобы точно подсчитывать вещи.

В случае, если это имеет значение, я работаю в zsh .

  • Как перенести список завершения zsh с фиксированной строкой текста до и после?
  • Получить командную строку в завершении ZSH
  • Что означает ** / * (D.) В аргументах (zsh) sed?
  • Расширение с числами в человекообразном формате
  • Поиск тестируемой утилиты для получения абсолютного пути к относительной целевой символической ссылке
  • zsh: сделать остановку ALT + BACKSPACE у не буквенно-цифровых символов
  • Полный путь в glob в Zsh
  • ESC-q не работает в tmux с zsh
  • 3 Solutions collect form web for “Без учета . и .. из результатов поиска и ls”

    С zsh :

     count() echo $# count * # non-hidden files (all types) count *(D) # files (all types) count **/*(D) # files recursively (all types) count **/*(D/) # directories only (recursively) 

    ( zsh globs никогда не включаются, ни .. даже когда dotglob включен (например, с квалификатором (D) globbing)).

    Чтобы избежать сообщения об ошибке, когда нет файла, добавьте классификатор N globbing:

     count *(ND) 

    Это заставляет glob расширяться до нуля (без аргумента, а не пустого аргумента), если нет совпадения.

    Обратите внимание, что поскольку символ новой строки является допустимым символом, как любой в имени файла, то вывод строки ls или find в wc -l неверен.

    POSIXly, вы могли бы считать символы / вместо вместо новой строки:

     find . ! -name . -prune -print | grep -c / 

    Или рекурсивно, используя этот трюк:

     find .//. ! -name . -prune -print | grep -c // 

    Для ls используйте -A вместо -a .

    от man ls :

      -A, --almost-all do not list implied . and .. 

    Чтобы find для исключения точечных каталогов, вы можете использовать это:

     $ find . ! -path . -type d 

    пример

     $ find . ! -path . -type d | head -5 ./.vim_SO ./.vim_SO/bundle ./.vim_SO/bundle/vim-fugitive ./.vim_SO/bundle/vim-fugitive/plugin ./.vim_SO/bundle/vim-fugitive/doc ... 
    Linux и Unix - лучшая ОС в мире.