Как найти файл и сделать его текущим рабочим каталогом (cd)

${SOME_VAR##foo/}-bashзамена переменной.

Ищет совпадение с шаблоном foo/от начала строки(SOME_VARзначения переменной )и усекает левую часть, включая шаблон.

Пример:

s="foo/some#foo#textfoo/textlast"
echo ${s##foo/}
some#foo#textfoo/textlast

Обратите внимание , этот ${s##foo/}эквивалентен ${s#foo/}, потому что он ищет только первое вхождение шаблона foo/с начала строки.

При этом ${s##*foo/}будет обрезана левая часть допоследнегосовпадающего шаблона (включительно)

echo ${s##*foo/}
textlast
0
05.09.2020, 16:06
1 ответ

Использование cdв качестве аргумента команды find -execприведет к смене каталога внутри команды find, когда команда findзавершит работу, вы все еще находитесь в начальном каталоге.

Я бы использовал

cd "$(find. -type d  -name "MCsniperPY-master" -print | head -1)"

где

  • find. -type d -name "MCsniperPY-master" -printнайдите все каталоги с именем «MCsniperPY -master» и затем распечатайте
  • head -1сохранится первый (вы можете пропустить, если уверены, что он только один)
  • cd "$(... )"перейдет cdв этот каталог (или вернет вас обратно в каталог $HOME, если ничего не будет найдено)

Вы можете использовать $CDPATH, в котором указан набор каталогов для поиска при использованииcd

4
18.03.2021, 23:07

Теги

Похожие вопросы