ver txt script ruta obtener nombre manejo extension cadenas archivos archivo shell ksh

shell - txt - Haz que Find imprima solo los nombres de archivo, no las rutas completas



ruta de un archivo linux (4)

Estoy usando el comando find en un script ksh, y estoy tratando de recuperar solo los nombres de archivo, en lugar de la ruta completa. Al igual que en, quiero que devuelva text.exe, no // nombre del sitio / dir1 / dir2 / texto.exe.

¿Cómo haría para conseguir eso? Para aclarar, sé el directorio en el que se encuentran los archivos, solo estoy agarrando los que se crearon antes de una fecha clave, así que la ruta no importa.


Aquí hay otra respuesta.

find | awk -F/ ''{print $NF}''


Puedes hacerlo con:

find ..... |sed ''s#.*/##''

Sin embargo, ¿realmente tiene sentido? Si hay dos archivos con el mismo nombre de archivo pero ubicados en directorios diferentes, ¿cómo puede distinguirlos?

p.ej

you are in /foo /foo/a.txt /foo/bar/a.txt

EDITAR

Edita la respuesta para obtener un mejor formato de texto.

Como describiste en el comentario, así que quieres

  1. encontrar algunos archivos,
  2. copiarlos en un directorio,
  3. gzip a un archivo diga a.gz
  4. eliminar archivos copiados solo si el paso 2 fue exitoso

Esto se podría hacer de una sola vez:

find ...|xargs tar -czf /path/to/your/target/a.gz

esto encontrará archivos, haga un archivo tar (a.gz) a su directorio de destino.


Si está utilizando GNU find, entonces

find path -printf "%f/n"

simplemente imprimirá el nombre del archivo y excluirá la ruta.


find ... -exec basename {} /;

también hará el truco ... pero como @Kent pregunta, ¿por qué quieres esto?