Terminal: Перейти к каталогу, найденному с помощью find

Это кажется мне очевидным вопросом, но я не могу найти ответ ... Предположим, я хочу найти определенный txt-файл в своем проекте и в терминале I, наберите:

find -name test.txt

В результате я мог бы получить что-то вроде:

./directory1/directory2/directory3/directory4/test.txt

Как перейти к directory4 без необходимости вводить полный путь?

3
задан 23 January 2013 в 16:42

2 ответа

Я бы использовал поддержку истории bash, чтобы сделать это. После любой команды вы можете снова обратиться к ней с помощью !!:

[jk@pecola tmp]$ find . -name test.text
./directory1/directory2/directory3/test.text

Для выполнения ls -l на выходе последней команды:

[jk@pecola tmp]$ ls -l $(!!)
ls -l $(find . -name test.text)
-rw-rw-r-- 1 jk jk 0 Jan 23 20:49 ./directory1/directory2/directory3/directory4/test.text

В этом примере мы используем синтаксис $(...), чтобы использовать вывод команды в качестве аргумента для другой команды.

Поскольку !! ссылается на последний запуск команды, теперь нам нужно быть более конкретным, если мы хотим повторно запустить команду find, поскольку с тех пор мы запустили ls. Мы можем использовать синтаксис !<match> для повторного запуска последней команды, которая началась с <match>

[jk@pecola tmp]$ dirname $(!find)
dirname $(find . -name test.text)
./directory1/directory2/directory3

[jk@pecola tmp]$ cd $(dirname $(!find))
cd $(dirname $(find . -name test.text))

[jk@pecola directory4]$ ls
test.text

. Я также нахожу это удобным для повторного выполнения команд, для которых вам нужен sudo: 113]

0
ответ дан 23 January 2013 в 16:42

Если сеанс терминала находится в графическом интерфейсе, вы можете выделить текст с помощью мыши (, левая кнопка ) и вставить весь текст в положение текстового курсора, щелкнув по средней . кнопка мыши.

0
ответ дан 23 January 2013 в 16:42

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

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