Estoy tratando de obtener solo los nombres del resultado de búsqueda usando find, pero siempre incluye los directorios también. ¿Cómo puedo imprimir solo los nombres (o asignar a una variable) usando find
find trunk/messages/ -name "*.po" -printf '%f\n'
un comando similar para asignar esto a una variable, por ejemplo, "recurso" para usarlo más adelante.
EDITAR: Y si es posible, solo el nombre excluyendo la extensión.
find . -name '*.po' -exec bash -c 'echo ${0%.po}' {} \;
find . -name '*.po' -type f -exec sh -c 'echo $(basename $(dirname $0))/$(basename $0)' {} \;
find
?Puede usar un
-execdir
parámetro que imprima el archivo sin ruta, por ejemplo:Archivos sin extensiones:
Nota: Dado que no es POSIX, BSD
find
imprimirá nombres de archivo limpios, sin embargo, el uso de GNUfind
imprimirá más./
.Ver: ¿Por qué el comando GNU find -execdir se comporta de manera diferente a BSD find?
fuente
Basado en un comando que encontré aquí: http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Podrías hacer esto usando
sed
(que se ejecutó más rápido para mí que elbasename
enfoque):fuente