texto recursivo por fecha extension consola comando buscar archivos archivo linux shell find

por - comando find linux recursivo



¿Cómo obtener solo el nombre de archivo con linux `find`? (7)

En GNU find puedes usar el parámetro -printf para eso, por ejemplo:

find /dir1 -type f -printf "%f/n"

Estoy usando Buscar todos los archivos en el directorio, así que obtengo una lista de rutas. Sin embargo, sólo necesito nombres de archivos. es decir, obtengo ./dir1/dir2/file.txt y quiero obtener file.txt


En el uso de mac (BSD find ):

find /dir1 -type f -exec basename {} /;


He encontrado una solución (en la página de makandracards), que da solo el nombre de archivo más reciente:

ls -1tr * | tail -1

(gracias a Arne Hartherz)

Lo utilicé para cp :

cp $(ls -1tr * | tail -1) /tmp/


Si desea ejecutar alguna acción solo contra el nombre de archivo, usar basename puede ser difícil.

Por ejemplo esto:

find ~/clang+llvm-3.3/bin/ -type f -exec echo basename {} /;

solo hará eco de nombre base /my/found/path . No es lo que queremos si queremos ejecutar en el nombre de archivo.

Pero luego puedes xargs la salida. por ejemplo, para matar los archivos en un directorio basado en nombres en otro directorio:

cd dirIwantToRMin; find ~/clang+llvm-3.3/bin/ -type f -exec basename {} /; | xargs rm


Si está utilizando GNU find

find . -type f -printf "%f/n"

O puedes usar un lenguaje de programación como Ruby (1.9+)

$ ruby -e ''Dir["**/*"].each{|x| puts File.basename(x)}''

Si te apetece una solución de bash (al menos 4)

shopt -s globstar for file in **; do echo ${file##*/}; done


Si su búsqueda no tiene una opción -printf, también puede usar basename:

find ./dir1 -type f -exec basename {} /;


Use -execdir que contiene automáticamente el archivo actual en {} , por ejemplo:

find . -type f -execdir echo ''{}'' '';''

También puedes usar $PWD lugar de . (en algunos sistemas no producirá un punto adicional en la parte frontal).

Si todavía tienes un punto extra, alternativamente puedes correr:

find . -type f -execdir basename ''{}'' '';''

-execdir utility [argument ...] ;

El -execdir primario es idéntico al -exec primario, con la excepción de que la utilidad se ejecutará desde el directorio que contiene el archivo actual .

Cuando se usa + lugar de ; , entonces {} se reemplaza con tantos nombres de ruta como sea posible para cada invocación de utilidad. En otras palabras, imprimirá todos los nombres de archivo en una línea.