Estou tentando obter apenas os nomes do resultado da pesquisa usando find, mas sempre inclui os diretórios também. Como posso imprimir apenas os nomes (ou atribuir a uma variável) usando find
find trunk/messages/ -name "*.po" -printf '%f\n'
um comando semelhante para atribuir isso a uma variável, por exemplo, "recurso" para usá-lo posteriormente.
EDIT: E, se possível, apenas o nome excluindo a extensão.
find . -name '*.po' -exec bash -c 'echo ${0%.po}' {} \;
find . -name '*.po' -type f -exec sh -c 'echo $(basename $(dirname $0))/$(basename $0)' {} \;
find
?Você pode usar o
-execdir
parâmetro que imprimiria o arquivo sem caminho, por exemplo:Arquivos sem extensões:
Nota: Como não é POSIX, o BSD
find
imprimirá nomes de arquivos limpos, no entanto, usar o GNUfind
imprimirá extra./
.Veja: Por que o comando GNU find -execdir se comporta de maneira diferente do que o BSD find?
fonte
Com base em um comando que encontrei aqui: http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html
Você poderia fazer isso usando
sed
(que foi executado mais rápido para mim do que abasename
abordagem):fonte