ver una solo script recorrer para nombre listar directorios directorio carpeta archivos bash shell

bash - una - Para archivos en el directorio, solo se hace eco del nombre de archivo(no hay ruta)



script para listar directorios (4)

¿Cómo hago para repetir solo el nombre de archivo de un archivo si itero un directorio con un bucle for?

for filename in /home/user/* do echo $filename done;

tirará de la ruta completa con el nombre del archivo. Solo quiero el nombre del archivo.


Otro enfoque es utilizar ls al leer la lista de archivos dentro de un directorio para darle lo que desea, es decir, "solo el / los nombre / s de archivo". A diferencia de leer la ruta completa del archivo y luego extraer el componente "nombre de archivo" en el cuerpo del bucle for.

Ejemplo a continuación que sigue a su original:

for filename in $(ls /home/user/) do echo $filename done;

Si está ejecutando el script en el mismo directorio que los archivos, simplemente se convierte en:

for filename in $(ls) do echo $filename done;


Si quieres una solución bash nativa

for file in /home/user/*; do echo ${file##*/} done

Lo anterior usa la Expansión de Parámetros que es nativa del shell y no requiere una llamada a un binario externo tal como basename

Sin embargo, podría sugerir simplemente usar find

find /home/user -type f -printf "%f/n"


Solo usa el basename :

echo `basename "$filename"`

Las comillas son necesarias en caso de que $ nombre de archivo contenga, por ejemplo, espacios.


Usar basename :

echo $(basename /foo/bar/stuff)