Я не полностью уверен, что я понимаю, что вы делаете , Если вы просто хотите, чтобы редактировать все *my_file.txt*
файлы, используйте:
vim *my_file.txt*
Нет необходимости возиться с find
или xargs
. Единственная проблема, с которой вы столкнетесь, - это то, что у вас так много файлов этой формы, что вы взорвите границы командной строки. Но, серьезно, вы, вероятно, не захотите редактировать это множество файлов.
В соответствии с этим обсуждением here, vim
не является одной из тех программ, которые вы можете легко воспроизводить с помощью стандартного ввода и вывода (по крайней мере, в режиме vi - ex-режим может отличаться).
Вы можете увидеть подобную проблему с делать такие вещи, как:
`vi filename`
$(vi filename)
vi filename </dev/null
В принципе, vim
не означает иметь его STDIN/STDOUT сброшенные о с, это интерактивный редактор и ожидает, что оконечное устройство. Последствия, которые вы видите, вероятно, либо curses
, либо vim
сами не очищают настройки stty
.
Если у вас есть более сложные команду, которая генерирует имена файлов для редактирования, вы можете использовать что-то вроде:
vim $(arbitrarily_bizarre_command_which_outputs_filenames)
, имея в виду, что вывод простой текст замена поэтому не будет легко работать с файлами например my list of porn sites.txt
(с пробелами в них). vim
увидит это как пять разных аргументов.
Если my_file.txt имеет только один экземпляр, почему бы не сделать непосредственно 'vim my_file.txt'? –
Идея ls * my_file.txt * заключается в том, чтобы получить одно имя файла из списка файлов. Я знаю, что этот поиск по шаблону приведет к единому результату. Результирующее имя файла должно быть отредактировано/просмотрено в vim, объединяя две команды с одной командой, проводя вывод. –