Есть ли способ, которым я могу передать вывод этой команды (при условии, что найден только один файл) к vi. Я хочу найти эту команду, а затем вызвать ее в vi.
Благодаря.
find . -name 'id.properties'
Вы можете вставить вывод в текстовый файл и открыть его с помощью vi.
find . -name 'id.properties' >> /home/<user>/find.txt
vi /home/<user>/find.txt
Этот ответ кажется наиболее прямым. Для вашего случая это будет:
vim $(find . -name 'id.properties')
Чтобы отредактировать файлы , напечатанные как find
:
find . -name 'id.properties' -exec vi {} +
На простом английском языке, это находит пути в текущем каталоге (.
) и всех подкаталогах с базой имя id.properties
. С этими файлами он запускает команду a vi file1 file2 [...]
(-exec vi {} +
). Если файлов очень много (как правило, тысячи), он может даже запустить более одной команды vi
, в каждой из которых есть набор файлов, чтобы иметь возможность вписать команды в максимальную длину команды вашей системы. Чтобы заставить его запускать команду для каждого файла , вы можете использовать \;
вместо +
.
Чтобы отредактировать текст , напечатанный find
:
find . -name 'id.properties' | vi -
Этот записывает пути (относительно текущего каталога) любых найденных файлов ( потому что по умолчанию find
имеет скрытый -print
в конце) к своему стандартному выходу, который подключен (|
) к стандартному входу vi
. vi
, в свою очередь, читает из стандартного ввода (-
) и показывает, что это файл для редактирования.