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
- encontrar algunos archivos,
- copiarlos en un directorio,
- gzip a un archivo diga a.gz
- 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?