Excluindo . e .. dos resultados em find e ls

Excluindo . e .. dos resultados em find e ls

Existe alguma maneira de prevenir e findlistar ls -lseus resultados? Nunca me importo em ver esse resultado na saída e isso me impede de canalizar efetivamente a saída para contar as coisas com precisão....wc -l

Caso seja importante, estou trabalhando em zsh.

Responder1

Para ls, use -Aem vez de -a.

de man ls:

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

Responder2

Com 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)

( zshglobs nunca incluem .nem ..mesmo quando dotglobestão habilitados (como com o (D)qualificador globbing)).

Para evitar uma mensagem de erro quando não houver nenhum arquivo, adicione o Nqualificador globbing:

count *(ND)

Isso faz com que o globo se expanda para nada (nenhum argumento, não um argumento vazio) se não houver correspondência.

Observe que, como o caractere de nova linha é um caractere tão válido quanto qualquer outro em um nome de arquivo, canalizar a saída de lsou findpara wc -lnão está correto.

POSIXly, você poderia contar os /caracteres em vez dos de nova linha:

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

Ou recursivamente, usando este truque:

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

Responder3

Para findexcluir os diretórios de pontos, você pode usar isto:

$ find . ! -path . -type d

Exemplo

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

informação relacionada