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.
ls -ld .*
Hará lo que quieras.
find . -type f -name '\.*' -print
Debe funcionar si desea enumerar todos los archivos ocultos en la jerarquía de directorios.
Si desea analizar la ls
salida, debe agregarla ^
al comienzo de la expresión regular y no usar la -l
opción. El uso -l
hace 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 printf
bash incorporado:
printf "%s\n" .*
Si usa zsh
, puede usar:
print -l .*
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 -maxdepth
para especificar qué tan lejos desea buscar en el árbol de directorios.
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 ls
to grep
(que, como lo señala devnull , nunca es una buena idea), asegúrese de usar \ls
o command ls
porque si ls
tiene 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á grep
si su patrón está anclado al comienzo de la línea.
-A
(en vez de -a
) de ignorar .
, ..
.
-A
difiere de los -a
directorios en los que ls
desciende, pero ambos son (igualmente) ignorados e inútiles para los nombres especificados en la línea de comando con -d
efecto. Además, si ls
tiene un alias, --color=auto
entonces la tubería está bien; solo --color=always
o --color
causa problemas.
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"
find . \( -type f -o -type d \) -name '\.*' -print
; aplicar maxdepth
donde sea necesario.
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 "^\./\."
Puedes probar:
find . -maxdepth 1 -type f -name '\.*' -print
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -print
Por supuesto, puede usar diferentes maxdepth
valores 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"
Puedes probar :
ls -a |grep -E "^\."
^ indica que es el comienzo del contenido con regexp
ls
nunca es una idea maravillosa, pero lo que intentaste hubiera funcionado si usaras el ancla^
para indicar el comienzo del partido.ls -la | grep '^\.'
ls -la | awk '$9 ~ /^\./'
será.