До сих пор я использовал, 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.