До сих пор я использовал, vim */**который, кажется, открывает все файлы в подкаталогах, но не в текущем каталоге, и vim *который открывает все файлы в currentкаталоге. Но как мне открыть все файлы в текущем каталоге и всех подкаталогах?
До сих пор я использовал, vim */**который, кажется, открывает все файлы в подкаталогах, но не в текущем каталоге, и vim *который открывает все файлы в currentкаталоге. Но как мне открыть все файлы в текущем каталоге и всех подкаталогах?
Ответы:
С zsh:
vim ./**/*(.)
Другие снаряды:
find . \( -name '.?*' -prune \) -o -type f -exec vim {} +
Открывать только (не скрытые) обычные файлы (не каталоги, символические ссылки, каналы, устройства, двери, сокеты ...).
vim ./**/*(D-.)
Другие оболочки, GNU find:
find . -xtype f -exec vim {} +
Чтобы также открыть скрытые файлы (и обход скрытых каталогов) и символические ссылки на обычные файлы.
А также:
vim ./***/*(D-.)
другие снаряды:
find -L . -type f -exec vim {} +
также просматривать символические ссылки при просмотре подкаталогов.
Если вам нужен только один уровень подкаталогов:
vim ./* ./*/*
Обратите внимание, что это хорошая привычка - добавлять префиксы в конце, ./если некоторые имена файлов начинаются с -или +.
(конечно, findони также работают zsh. Обратите внимание, что они могут запускать несколько экземпляров, vimесли список файлов большой).
В bash с shopt -s extglob:
for file in **/**; do [[ -f "$file" ]] && vim "$file"; done
Обратите внимание, что, согласно комментарию Стефана , до Bash 4.3 это следовало за любыми символическими ссылками в рассматриваемых каталогах.
vimна файл, хотя. Обратите внимание, что bash до 4.3 использовался для перемещения по символическим ссылкам с помощью**. Это было исправлено в 4.3.