À l'exclusion . et .. à partir des résultats dans find et ls

Y at-il un moyen d'empêcher la find et ls -l de la list . et .. dans leurs résultats? Je ne me soucie jamais de voir ce résultat dans la sortie, et cela m'empêche de canaliser efficacement leur sortie vers wc -l pour countr les choses avec précision.

Au cas où cela count, je travaille dans zsh .

Avec 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 dotglob jamais . ni .. même quand dotglob est activé (comme avec le qualificatif de dotglob (D) )).

Pour éviter un message d'erreur lorsqu'il n'y a pas de file, ajoutez le qualificatif N globbing:

 count *(ND) 

Cela provoque l'expansion du glob à rien (pas d'argument, pas un argument vide) s'il n'y a pas de correspondance.

Notez que puisque le caractère newline est aussi valide que n'importe quel caractère dans un nom de file, la sortie de ls ou la find dans wc -l n'est pas correcte.

POSIXly, vous pouvez countr les / caractères à la place des caractères newline:

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

Ou récursivement, en utilisant cette astuce:

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

Pour ls , utilisez -A au lieu de -a .

de l' man ls :

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

Pour find find pour exclure les directorys de point, vous pouvez utiliser ceci:

 $ find . ! -path . -type d 

Exemple

 $ 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 ...