Как я могу передать вывод по каналу “находки” к “CD”?

Что я должен сделать, чтобы искать файл в списке папок и изменить текущий каталог на каталог файла?

Я попробовал find -name script.py | cd но это не работало (не, что я ожидал это к).

Спасибо за помощь!

6
задан 15 April 2014 в 06:56

2 ответа

cd не читает из stdin, таким образом, Вы не можете передать имя папки по каналу в него. Но можно использовать "$(...)" для использования вывода команды как аргумент в пользу cd:

cd "$(find -name script.py -type f -printf '%h\n' -quit)"

-printf '%h\n' говорит find производить только к папкам, который содержит файлы.

-quit говорит find выходить после того, как это нашло первый файл соответствия.

10
ответ дан 17 November 2019 в 04:42

Можно использовать этот код:

cd "$(dirname "$(find / -type f -name test | head -1)")"

, Где, поскольку Вы видите его, будет искать от вершины корневого каталога с командой find /, тогда, это перечислит регулярные файлы, названные тестом - name test, в последний раз это изменится на свой каталог.

Примечание: передача по каналу до head -1 отфильтрует все кроме первого.

dirname - разделяют суффикс некаталога от имени файла

cd каталог

изменения
5
ответ дан 17 November 2019 в 04:42

Другие вопросы по тегам:

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