Comando Linux para encontrar um diretório e ir até lá

6

Eu gostaria de encontrar o diretório que mantém um determinado arquivo e cd lá. por exemplo,

find * -name hello.txt 

saída: Documents / Projects / hello.txt

cd Documents/Projects

Como eu canalizo esses comandos? Obrigado!

    
por OckhamsRazor 06.09.2011 / 12:41

2 respostas

13

Tente

cd $(dirname$(find /path -name hello.txt | head -n 1))

ou

cd $(find /path -name hello.txt | head -n 1 | xargs dirname)

Você precisará fornecer um path para pesquisar, * no seu acima não funcionaria porque o shell o expandiria.

EDIT e se você tem espaços em seus nomes de arquivos

cd $(find /home -name 'he llo.txt' -print0 -quit | xargs -0 dirname)

e se você tiver espaços nos nomes de diretório também

 cd "$(find /path -name 'hello.txt' -print0 -quit | xargs -0 dirname)"
    
por 06.09.2011 / 13:38
8

Em vez de encontrar todos e head -1 , use apenas a opção -quit para fazer com que o comando find pare após o primeiro arquivo hello.txt ser encontrado:

$ cd $(dirname $(find /path -name hello.txt -print -quit))
    
por 06.09.2011 / 13:03

Tags