J'essaie d'obtenir uniquement les noms des résultats de recherche en utilisant find, mais cela inclut toujours les répertoires également. Comment imprimer uniquement les noms (ou les affecter à une variable) en utilisant find
find trunk/messages/ -name "*.po" -printf '%f\n'
une commande similaire pour l'attribuer à une variable, par exemple "ressource" pour l'utiliser plus tard.
EDIT: Et si possible uniquement le nom à l'exclusion de l'extension.
find . -name '*.po' -exec bash -c 'echo ${0%.po}' {} \;
find . -name '*.po' -type f -exec sh -c 'echo $(basename $(dirname $0))/$(basename $0)' {} \;
find
?Vous pouvez utiliser un
-execdir
paramètre qui imprimerait le fichier sans chemin, par exemple:Fichiers sans extensions:
Remarque: Étant donné qu'il ne s'agit pas de POSIX, BSD
find
imprimera des noms de fichiers propres, mais l'utilisation de GNUfind
en imprimera plus./
.Voir: Pourquoi la commande GNU find -execdir se comporte-t-elle différemment de BSD find?
la source
Basé sur une commande que j'ai trouvée ici: http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Vous pouvez le faire en utilisant
sed
(qui s'est exécuté plus rapidement pour moi que l'basename
approche):la source