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.
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?
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.
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"
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"
Tags command-line bash