1

Предположим, команда:pwd возвращает

~/Users/MyUser/FolderA/FolderB

Я хочу написать скрипт, в котором я заранее не знаю, что я нахожусь в FolderB , так как я могу быть в FolderA или даже в какой-то другой внешней папке.

Мой сценарий находится в FolderB и я хочу найти папку с определенным именем (FolderC) которая находится в FolderA рядом с FolderB

Если я ищу find ~ iname "FolderC" я нахожу все виды результатов, которые мне не нужны. Я хочу только 1 ближайший возможный каталог с этим именем к моему сценарию.

Какая линия поможет мне найти это?

2 ответа2

0

Используйте абсолютный путь вместо относительного.

Вместо ~/... Используйте /home /... (или C:/... для Windows). Это позволяет избежать трудностей при поиске файла относительно вашего местоположения.

0

Мой сценарий находится в FolderB, и я хочу найти папку с определенным именем (FolderC), которая находится в FolderA рядом с FolderB

Сначала вам нужно найти каталог, в котором находится ваш скрипт. Затем вам нужно перейти на один каталог вверх и найти FolderB:

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

Ответ на пересмотренный вопрос

Я не знаю, находится ли FolderC непосредственно над сценарием, это может быть 2 3 или даже больше каталогов, ...

Это ищет FolderC через все родительские каталоги вплоть до корневого каталога:

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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .