Как вывести команду, которая воздействует на несколько файлов, в несколько файлов?

Вот я иду, хотя немного поздно, может быть, вы уже разрешили свое сомнение; )Я не видел ни в одном из комментариев известного мне способа с vim , поэтому добавляю его:

Когда вы редактируете файл, вы нажимаете :wили :wqи видите раздражающее сообщение " E45 установлена ​​опция "только для чтения" (добавьте ! для переопределения)"

E45 readonly option is set (add ! to override)

Вы можете ввести

:w !sudo tee %

w !sudo tee %

  • wзаписывает буфер,
  • !sudoвызывает оболочку с помощью sudo,
  • teeперенаправляет вывод vim :wна выход с тройником, а
  • %— текущее имя файла

И это должно сработать. Обратите внимание, что это предложит перезагрузить файл в vim, для чего вам нужно нажать L

enter image description here

0
26.05.2020, 20:55
1 ответ

Вам потребуется выполнить по одной команде для каждого файла, поэтому лучше всего использовать цикл.

С оболочкой zsh:

for f (./*.o) objdump -d --no-show-raw-insn $f > $f:r.txt

С оболочкой bashили любой другой оболочкой POSIX (, включаяzsh):

for f in./*.o; do objdump -d --no-show-raw-insn "$f" > "${f%.o}.txt"; done

Помните, что будет создан пустой файл с именем *.txt, если нет .oфайла (, кромеzsh).

2
18.03.2021, 23:32

Теги

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