Câu trả lời:
Với zsh:
vim ./**/*(.)
Vỏ khác:
find . \( -name '.?*' -prune \) -o -type f -exec vim {} +
Để chỉ mở các tệp thông thường (không ẩn) (không phải thư mục, liên kết tượng trưng, đường ống, thiết bị, cửa ra vào, ổ cắm ...).
vim ./**/*(D-.)
Các shell khác, GNU find:
find . -xtype f -exec vim {} +
Để cũng mở các tệp ẩn (và duyệt qua các thư mục ẩn) và liên kết tượng trưng đến các tệp thông thường.
Và:
vim ./***/*(D-.)
vỏ khác:
find -L . -type f -exec vim {} +
để đi qua các liên kết tượng trưng khi nhìn vào thư mục con.
Nếu bạn chỉ muốn một cấp thư mục con:
vim ./* ./*/*
Lưu ý rằng đó là một thói quen tốt để thêm tiền tố ./vào trong trường hợp một số tên tệp bắt đầu bằng -hoặc +.
(tất nhiên findnhững cái đó cũng hoạt động zsh. Lưu ý rằng chúng có thể chạy một số trường hợp vimnếu danh sách các tệp lớn).
Trong bash với shopt -s extglob:
for file in **/**; do [[ -f "$file" ]] && vim "$file"; done
Lưu ý rằng, theo nhận xét của Stéphane , trước Bash 4.3, điều này sẽ theo bất kỳ liên kết tượng trưng nào trong các thư mục được đề cập.
vimcho mỗi tập tin mặc dù. Lưu ý rằng bash trước 4.3 được sử dụng để duyệt qua các liên kết tượng trưng với**. Nó đã được sửa trong 4.3.