mostrar solo archivos que comienzan con. (oculto)

11

Traté de mostrar solo archivos ocultos pero no sé cómo hacerlo.

Eso está funcionando (pero haciendo coincidir también los puntos en otros lugares)

ls -la | grep '\.'

Intenté agregar ^pero no encontré la solución.

usuario3014282
fuente
1
Analizar lsnunca es una idea maravillosa, pero lo que intentaste hubiera funcionado si usaras el ancla ^para indicar el comienzo del partido. ls -la | grep '^\.'
devnull
3
No, no lo hará, el nombre del archivo no es el comienzo de la línea con la bandera -l. ls -la | awk '$9 ~ /^\./'será.
yoonix

Respuestas:

18

ls -ld .* Hará lo que quieras.

Flup
fuente
4
find . -type f -name '\.*' -print 

Debe funcionar si desea enumerar todos los archivos ocultos en la jerarquía de directorios.

periket2000
fuente
2

Si desea analizar la lssalida, debe agregarla ^al comienzo de la expresión regular y no usar la -lopción. El uso -lhace que cada salida de línea comience con información de permiso de archivo o carpeta, no con el nombre del archivo o carpeta. Entonces deberías usar así:

ls -Ad | grep '^\.'

O puedes hacer con printfbash incorporado:

printf "%s\n" .*

Si usa zsh, puede usar:

print -l .*
Cuonglm
fuente
1

Aquí hay otras dos formas de encontrar solo archivos ocultos.

find . -maxdepth 1 -name ".*" -type f -ls

o

find . -maxdepth 1 -name ".*" -type f -printf "%P \n"

Use -maxdepthpara especificar qué tan lejos desea buscar en el árbol de directorios.

Valentin Bajrami
fuente
1

Una mejora en la respuesta de Flup :

ls -lad .[!.]* ..?*

Esto mostrará una lista de todos los archivos cuyo nombre comienza con un punto y que no son .ni ...

Tenga en cuenta que si desea canalizar la salida de lsto grep(que, como lo señala devnull , nunca es una buena idea), asegúrese de usar \lso command lsporque si lstiene un alias para mostrar la salida en color (como en Debian, por ejemplo) , su salida contiene secuencias de escape ANSI para crear una salida de color, que se disparará grepsi su patrón está anclado al comienzo de la línea.

Joseph R.
fuente
1
Se puede utilizar -A(en vez de -a) de ignorar ., ...
OJFord
@ OJFord + -Adifiere de los -adirectorios en los que lsdesciende, pero ambos son (igualmente) ignorados e inútiles para los nombres especificados en la línea de comando con -defecto. Además, si lstiene un alias, --color=auto entonces la tubería está bien; solo --color=alwayso --colorcausa problemas.
dave_thompson_085
0

La solución de val0x00ff es realmente buena, pero olvida los directorios ocultos.

Si desea archivos ocultos y directorios ocultos , sin. y ..:

find -maxdepth 1 -regex '\./\..+' -printf "%P\n"
piroux
fuente
Su sugerencia falla en VMware ESXi (no enumere archivos ni directorios) y también falla en Linux (con maxdepth> 1, también enumera todos los archivos en un directorio que comienza con a.), Pero esto funciona tanto en Linux como en ESXi: find . \( -type f -o -type d \) -name '\.*' -print; aplicar maxdepthdonde sea necesario.
Jeroen Wiert Pluimers
0

Debajo de uno es muy compacto y admite muchas variantes

1) Mostrar archivos ocultos, directorios y subdirectorios

find . | grep "^\./\."

2) Mostrar solo directorios y subdirectorios ocultos

find . -type d | grep "^\./\."

3) Mostrar archivos ocultos solo en directorios actuales y subdirectorios

find . -type f | grep "^\./\."

4) Mostrar archivos y directorios ocultos en la carpeta actual

find . -maxdepth 1 | grep "^\./\."

GLK
fuente
0

Puedes probar:

find . -maxdepth 1 -type f -name '\.*' -print
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -print

Por supuesto, puede usar diferentes maxdepthvalores o eliminarlo por completo. Muy útil si desea explorar entre directorios ( -type d) o archivos regulares ( type f) o ambos, y combinarlos con otras funciones como:

(p. ej., última hora de modificación, basada en el ejemplo de @piroux , completado por @ jeroen-wiert-pluimers )

find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -exec stat -c %y {} \; -printf "%P\t"
azbarcea
fuente
-1

Puedes probar :

ls -a |grep -E  "^\."

^ indica que es el comienzo del contenido con regexp

Lingjing Francia
fuente
1
Un duplicado de otra respuesta de hace 3 años ...
Jeff Schaller
Vi la respuesta anterior, no es duplicado, y definitivamente "ls -a" y "ls -Ad" no tienen el mismo significado. "-a" significa que todos los archivos / directorios incluidos comienzan con "." -A significa listar todo excepto "." , ".." y el contenido del directorio.
Lingjing Francia