Excluyendo . y .. de los resultados en find y ls

Excluyendo . y .. de los resultados en find y ls

¿Hay alguna forma de evitar findque ls -laparezcan en la lista .y ..en sus resultados? Nunca me importa ver este resultado en la salida, y eso me impide canalizar efectivamente su salida para wc -lcontar las cosas con precisión.

Por si importa, estoy trabajando en zsh.

Respuesta1

Para ls, utilice -Aen lugar de -a.

de man ls:

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

Respuesta2

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

( zshlos globos nunca se incluyen .ni ..siquiera cuando dotglobestán habilitados (como con el (D)calificador globo)).

Para evitar un mensaje de error cuando no hay ningún archivo, agregue el Ncalificador global:

count *(ND)

Eso hace que el globo se expanda hasta quedar en nada (sin argumento, no un argumento vacío) si no hay ninguna coincidencia.

Tenga en cuenta que, dado que el carácter de nueva línea es un carácter tan válido como cualquier otro en un nombre de archivo, canalizar la salida de lso findhacia wc -lno es correcto.

POSIXly, podrías contar los /caracteres en lugar de los de nueva línea:

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

O recursivamente, usando este truco:

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

Respuesta3

Para findexcluir los directorios de puntos, puede usar esto:

$ find . ! -path . -type d

Ejemplo

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

información relacionada