Saltar al contenido

ls contenido de un directorio ignorando enlaces simbólicos

Entiende el código bien previamente a aplicarlo a tu proyecto y si tdeseas aportar algo puedes decirlo en los comentarios.

Solución:

Para la pregunta indicada puedes usar find:

find . -mindepth 1 ! -type l

enumerará todos los archivos y directorios en el directorio actual o cualquier subdirectorio que no sea un enlace simbólico.

mindepth 1 es solo para saltarse el . entrada del directorio actual. La carne es la combinación de -type lque significa “es un enlace simbólico”, y !, lo que significa negar la siguiente prueba. En combinación, coinciden con todos los archivos que no son un enlace simbólico. Esto enumera todos los archivos y directorios de forma recursiva, pero no los enlaces simbólicos.

Si solo desea archivos normales (y no directorios):

find . -type f

Para incluir solo los elementos secundarios directos de este directorio, y no todos los demás de forma recursiva:

find . -mindepth 1 -maxdepth 1

Puede combinar esas (y otras) pruebas para obtener la lista de archivos que desea.

Para ejecutar un determinado grep en cada archivo que coincida con las pruebas que está usando, use -exec:

find . -type f -exec grep -H 'some pattern' '' +

El '' será reemplazado con los archivos. El + es necesario decir find tu comando está hecho. La opción -H obliga a grep a mostrar un nombre de archivo incluso si se ejecuta con un solo archivo coincidente.

O, más simple:

ls -l | grep -v ^l

Explicación

ls -l significa listar en forma larga. Cuando haces esto, lo primero string de caracteres da información sobre cada archivo. El primer carácter indica de qué tipo es cada archivo. Si es un enlace simbólico, entonces un l es el primer personaje.

grep -v ^l significa filtrar (-v) las líneas que comienzan con (^) un l.

Desde la versión 2.12 en adelante, el -r La opción para GNU grep no elimina la referencia a los enlaces simbólicos a menos que los especifique a mano:

-r, –recursivo

Leer todos los archivos de cada directorio, recursivamente, siguiendo enlaces simbólicos solo si están en la línea de comando. Esto es equivalente a la opción recursiva -d.

-R, –desreferencia-recursiva

Lea todos los archivos en cada directorio, recursivamente. Siga todos los enlaces simbólicos, a diferencia de -r.

valoraciones y reseñas

Recuerda que puedes permitirte parafrasear tu experiencia si hallaste tu rompecabezas en el momento justo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *