Como você pode obter rapidamente o caminho completo para um arquivo para uso no terminal?

47

Como você pode obter rapidamente o caminho completo para um arquivo para uso no terminal?

Olivier Lalonde
fonte

Respostas:

44
readlink -f foo.bar

ou (instale primeiro)

realpath foo.bar
spennig
fonte
Esta resposta é mais precisa do que uma aceita.
Kunok # 04/16
Para a pasta completa: ls | xargs realpath.
Pablo A
1
A desvantagem readlinké que ele funcionará mesmo que o arquivo não exista. Isso pode perpetuar os erros de maneiras muito estranhas.
GregRos 28/06
32

Basta arrastar e soltar o arquivo no terminal.

Olivier Lalonde
fonte
1
Estou colocando isso aqui para não esquecer, espero que ajude alguns de vocês: D
Olivier Lalonde
Retorna um caminho prefixado "smb: //" para compartilhamentos montados em SMB em vez do caminho montado real.
Kupiakos
@Kupiakos: para mim, o gnome-terminal traduz felizmente o caminho do arquivo descartado para #'/home/alexcohn/.gvfs/…'
Alex Cohn /
11

Todas boas respostas; Aqui está uma dica para outra situação.

Se você estiver navegando em seus arquivos usando o nautilus e desejar o caminho completo do seu diretório atual, pressione CTRL+L. Isso altera os botões de navegação temporariamente de volta para a barra de endereços de estilo antigo, permitindo copiar o caminho.

Sicco
fonte
… Mas ainda é smb://estilo, portanto não pode ser reutilizado no terminal.
Alex Cohn
Interessante; no meu sistema (Ubuntu 13.10) não recebo o smb://caminho do estilo.
Sicco 17/03
Exatamente o que eu estava procurando, eu quero dizer o terminal é um ótimo lugar para ls mas há aqueles momentos em que você trabalha em um arquivo de pasta de visualizações: ')
edencorbin
3

Se for um executável, execute (em um terminal):

$ which your_executable

Por exemplo: $ which ls

perseo22
fonte
Esta é a resposta que eu estava procurando
Sharjeel Ahmed
1

Além de arrastar o ícone, existem algumas maneiras de obter o caminho completo sem o nautilus (ou thunar, konqueror, et al.). Você clique três vezes ou clique e arraste e copie, potencialmente salvando isso no seu gerenciador de transferência * e colando-o onde precisar.
(pastie, klipper, glippy, glipper, anamnese)

  • Você pode usar findem um diretório acima do seu arquivo. (Se você não sabe onde está, comece onde o seu shell o deixa, [geralmente] na parte superior do diretório inicial.)
    find . | egrep filename

  • Você pode usar locatepara obter o nome do arquivo. (Execute sudo updatedbse isso não tiver sido feito recentemente.)

Um exemplo mais realista do uso de find seria algo como:

$ find | egrep askubuntu | grep txt
./askubuntu-temp.txt
./drDocuments/web/meta.askubuntu.txt
./other/stuff/askubuntu.txt.iteration.1
./other/stuff/askubuntu.txt.iteration.2
[...]

Para cortar os que você não gosta, por exemplo:

find | egrep askubuntu | grep txt | egrep -v iteration
find | egrep askubuntu | grep txt | egrep -v 'iteration|meta|other'

o find é usado da mesma maneira, embora o grep seja frequentemente mais necessário:

locate myfile | egrep home | egrep -v 'mozilla|cache|local|bin|\.pyc|test' | grep \.py

Essa não é a maneira mais eficiente de digitar isso, mas geralmente se eu perdi um arquivo, faço isso de forma iterativa, adicionando cláusulas grep à medida que for avançando.

belacqua
fonte
1

Facilmente feito em python usando a os.realpath()função:

$ python -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' ./VirtualBox\ VMs/                                      
/mnt/HDD/VirtualBox VMs

De uma resposta relacionada , você também pode usarreadlink

$ readlink -e ./out.txt                                                                                                  
/home/username/out.txt
Sergiy Kolodyazhnyy
fonte
0

Se você simplesmente copiar um arquivo no Nautilus, o caminho completo será copiado.
Em seguida, cole-o no terminal. Simplesmente colando, você obtém:

file:///home/juan/2017/agenda20170101.html

Se você clicar com o botão direito do mouse e escolher "Colar nomes de arquivos", obterá:

'/home/juan/2017/agenda20170101.html'

com as aspas, como mostrado.
Isso difere do Windows, que copia o conteúdo do arquivo em vez de seu nome.

Juan Lanus
fonte