/ / Se necesita un comando para imprimir el nombre del archivo pero no las rutas de directorio anteriores [cerrado] - bash, directorio

Se necesita un comando para imprimir el nombre del archivo pero no las rutas del directorio precedente [cerrado] - bash, directorio

Actualmente se imprime /dir1/dir2/dir3/filename

Solo quiero que se imprima solo el filename "sin" las rutas del directorio.

¿Alguna sugerencia?

Respuestas

1 para la respuesta № 1

La pregunta es extremadamente vaga, pero suponiendo que tienes un comando Bash como

echo "$path"

Puedes imprimir solo el nombre del archivo con

echo "${path##*/}"

echo puede hacer cosas inesperadas cuando se usa con cadenas variables, por lo que una mejor alternativa es

printf "%sn" "${path##*/}"

0 para la respuesta № 2

No entiendo realmente lo que estás tratando de hacer, pero

ls /path/to/files > /path/to/output

Digamos que tiene 3 archivos de texto individuales en el directorio, lo anterior combinará los 3 archivos de cada nombre de archivo en una línea sin la ruta real.

Espero que ayude

Alternativa de bash

for file in /path/to/files/*.txt; do
echo ${file##*/} >> /path/to/output/filename.txt
done

0 para la respuesta № 3

utilizar nombre base para eso asi

shortpath=$(pwd)
basename "$shortpath"

0 para la respuesta № 4

Pude lograr esto usando awk

| awk "{(n = split ($ 18, a," / ")); imprime $ 6, $ 10, $ 8, a [n]," n "}"> /sometextfile.txt

"n" era porque necesitaba una línea en blanco entre los resultados.