como encontrar a pasta mais próxima na linha de comando

1

Suponha que o comando: pwd retorne

~/Users/MyUser/FolderA/FolderB

Eu quero escrever um script em que eu não saiba de antemão que estou em FolderB , pois posso estar em FolderA ou até mesmo em outra pasta externa.

Meu script reside em FolderB e quero encontrar uma pasta com um nome específico (FolderC) que resida em FolderA ao lado de FolderB

Se eu pesquisar por find ~ iname "FolderC" i, encontrarei todos os tipos de resultados que eu não quero. Eu quero apenas o 1 diretório possível mais próximo com esse nome para o meu script.

Qual é a linha que me ajudará a encontrá-lo?

    
por Lena Bru 19.11.2015 / 22:15

2 respostas

0

Use o caminho absoluto em vez do relativo.

Em vez de ~ / ... Use / home / ... (ou C: / ... para Windows). Isso evita a dificuldade em encontrar o arquivo em relação à sua localização.

    
por 19.11.2015 / 22:40
0

My script resides in FolderB and I want to find a folder with a specific name (FolderC) that resides in FolderA alongside FolderB

Primeiro, você precisa encontrar o diretório que você script está em . Então, você precisa subir um diretório e procurar por FolderB:

dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
folderc="$dir/../FolderC"

Resposta para a pergunta revisada

I do not know if FolderC resides directly above the script, it may be 2 3 or even more directories up, ...

Isso procura por FolderC através de todos os diretórios pai até o diretório raiz:

dir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )    
while echo dir=$dir; [ $dir != / ] && dir=$(dirname "$dir")
do
    b="$dir/FolderC"
    [ -d "$b" ] && break
    false
done || echo "Fail no such directory"
echo "The nearest FolderC is $b"
    
por 19.11.2015 / 22:43