Existe uma maneira de obter o caminho absoluto de um arquivo que está sendo pesquisado?
Por exemplo:
find .. -name "filename"
Dá-me resultados como, ../filename
mas eu quero o caminho completo.
O que preciso é encontrar no diretório pai e seus filhos, para um arquivo específico, que usarei em outro script posteriormente.
obrigado
command-line
find
JorgeeFG
fonte
fonte
Respostas:
Tente algo como:
fonte
$(cd ..; pwd)
. Aqui funciona bem, mas se eu fizer sozinho em um terminal, não consigo obter o diretório pai ... recebo "Bash: <dir>: é um diretório. E se$(cd ..; echo "something")
eu receber" algo: não um command "(cd ..; pwd)
( ... )
significa executar em um subshell, a saída é gravada em stdout.$( ... )
significa "substituição de comando". O último pode ser usado como se fosse uma expansão variável.Tente usar a
-exec
opção defind
:Nota:
readlink
imprime o valor de um link simbólico ou de um nome de arquivo canônico.fonte
Você pode usar
bash
o Tilde Expansion para obter o caminho absoluto do diretório de trabalho atual, assim tambémfind
imprime o caminho absoluto para os resultados:Se executado
~/Desktop
, isso é expandido parae imprime resultados como:
Se você quiser usar essa abordagem com o diretório pai do diretório de trabalho atual, precisará
cd
antes de chamarfind
:fonte
A maneira mais simples é
fonte
find `pwd -P` -name "filename"
O uso do PWD também pode mostrar o diretório completo. O Pwd mostrará todas as diretivas em que você está, como a expansão do nome do arquivo. Espero que isso tenha ajudado.
fonte
Isso funcionou para mim, mas retornará apenas a primeira ocorrência.
Para obter caminhos completos para todas as ocorrências (como sugerido por Sergiy Kolodyazhnyy)
fonte
Removendo o último componente do diretório com o parâmetro Expansion .
Um exemplo de como você pode usar o mapfile para salvar a saída da localização em uma matriz indexada para uso posterior.
(se nenhum nome de matriz for especificado, MAPFILE será o nome da matriz padrão).
fonte