На этот вопрос уже есть ответ здесь:
У меня есть файл, /home/user/important.txt
. Чтобы найти его, я использую:
find /home/user -type f -name 'important'
Затем я хочу открыть файл в редакторе Vim с помощью конвейера.
Как я могу это сделать?
Что-то вроде
find /home/user -type f -name 'important' | vi
Добавьте * подстановочный знак после 'важный', также можно использовать следующую команду:
vim $(find /home/user -name "important*")
Можно использовать -exec
наряду с find
. Используйте следующую команду:
find /home/user -type f -name 'important' -exec vi {} \;
Использование:
find ./ -name 'important.txt' -print0 | xargs -0 vi
Это работает, и это просто.
, Если Вам не нужен канал тогда, можно попробовать это:
find ./ -name 'important.txt' -exec vi {} \;
locate
просто как так:
locate -0 important.txt | xargs -0 vi
Вы могли использовать предпочтительный вариант:
find ./ -name 'important' -print0 | xargs -0 vi
или как второй выбор:
find /home/user -type f -name 'important' -exec vi {} \;
отметьте, эти xargs
, команда может правильно обработать пробелы в именах файлов, найденных эти find
команда без Вас имеющий необходимость к волнению по поводу неожиданных результатов.
и избегают замены команды как следующее:
vim $(find /home/user -name "important*")
Это вызвано тем, что в большинстве случаев, Вы просто не знаете, сколько результатов (файлы) Вы ожидаете или имеют ли те имена файлов пробелы в них для предотвращения нежелательных результатов из-за пробелов.
Если Вы хотите получить вывод команды находки (т.е. список файлов) в энергии, то следующему считают энергию из вывода находки:
find /home/user -type f -name 'important' | vi -
<час> , Если Вы хотите открыть сами файлы, тогда xargs и находка - исполнительное действие является хорошими вариантами, как упомянуто другими ответами.
Однако для - исполнительное действие Вы - очень более обеспеченное использование следующего синтаксиса:
find /home/user -type f -name 'important' -exec vi {} +
различие между "\"; и "+" в конце команды следующие:
С "\"; экземпляр энергии будет открыт для каждого файла, который найден. Это означает, что, если 20 файлов найдены, необходимо будет закрыть энергию 20 раз для возвращения к оболочке, и Вы не можете переместиться между файлами в энергии.
С "+", единственный экземпляр энергии будет открыт со всеми найденными файлами. Это означает, что можно двинуться вперед-назад между файлами как буферы и когда Вы сделаны, существует только один экземпляр энергии, которая будет закрыта.