Tôi biết **/*.ext
mở rộng cho tất cả các tệp trong tất cả các thư mục con phù hợp với *.ext
, nhưng mở rộng tương tự bao gồm tất cả các tệp như vậy trong thư mục hiện tại là gì?Điều gì mở rộng cho tất cả các tệp trong thư mục hiện tại đệ quy?
Trả lời
này sẽ làm việc trong Bash 4:
ls -l {,**/}*.ext
Để cho glob đúp dấu hoa thị để làm việc, tùy chọn globstar
cần phải được đặt (mặc định: trên):
shopt -s globstar
Từ man bash
:
globstar If set, the pattern ** used in a filename expansion con‐ text will match a files and zero or more directories and subdirectories. If the pattern is followed by a /, only directories and subdirectories match.
Tôi đã thử nghiệm Ubuntu và Cygwin, và 'globstar' được mặc định' off' –
Câu trả lời hay nhất! nhưng tôi nghĩ rằng '**/*. ext' là đủ mặc dù. Ngoài ra, bạn sẽ không có các tệp ẩn trừ khi bạn 'shopt -s dotglob'. –
CentOS 6 Bash 4.1.2 của tôi cũng mặc định tắt cho tùy chọn globstar. – toxalot
$ find . -type f
Điều đó sẽ liệt kê tất cả các tệp trong thư mục hiện tại. Sau đó bạn có thể làm một số lệnh khác trên đầu ra sử dụng exec
$find . -type f -exec grep "foo" {} \;
Đó sẽ grep mỗi tập tin từ tìm cho chuỗi "foo".
Điều này sẽ in tất cả các tệp trong thư mục hiện tại và các thư mục con của nó kết thúc bằng '.ext'.
find . -name '*.ext' -print
Bạn có thể sử dụng: **/*.*
để bao gồm tất cả các tệp đệ quy (bật theo: shopt -s globstar
).
Vui lòng tìm bên dưới kiểm tra các biến thể khác và cách chúng hoạt động.
Kiểm tra thư mục với 3472 file trong mẫu thư mục VLC kho:
(Tổng số file của 3472 tính theo: find . -type f | wc -l
)
ls -1 **/*.*
- lợi nhuận 3338ls -1 {,**/}*.*
- trả lại 3341 (theo đề xuất của Dennis)ls -1 {,**/}*
- trả 8265ls -1 **/*
- lợi nhuận 7817, ngoại trừ các file ẩn (theo đề nghị của Dennis)ls -1 **/{.[^.],}*
- lợi nhuận 7869 (theo đề nghị của Dennis)ls -1 {,**/}.?*
- trả 15855ls -1 {,**/}.*
- trả về 20321
Vì vậy, tôi nghĩ rằng phương pháp gần nhất để liệt kê tất cả các tệp recursiv ely là ví dụ đầu tiên (**/*.*
) theo gniourf-gniourf comment (giả sử các tập tin có phần mở rộng thích hợp, hoặc sử dụng một cụ thể), như ví dụ thứ hai cho vài bản sao giống như dưới đây:
$ diff -u <(ls -1 {,**/}*.*) <(ls -1 **/*.*)
--- /dev/fd/63 2015-04-19 15:25:07.000000000 +0100
+++ /dev/fd/62 2015-04-19 15:25:07.000000000 +0100
@@ -1,6 +1,4 @@
COPYING.LIB
-COPYING.LIB
-Makefile.am
Makefile.am
@@ -45,7 +43,6 @@
compat/tdestroy.c
compat/vasprintf.c
configure.ac
-configure.ac
và người kia tạo ra thậm chí tiếp tục trùng lặp.
Để bao gồm các tệp ẩn, hãy sử dụng: shopt -s dotglob
(tắt theo shopt -u dotglob
). Nó không được khuyến khích, bởi vì nó có thể ảnh hưởng đến các lệnh như mv
hoặc rm
và bạn có thể vô tình xóa các tệp sai.
Trên thiết bị đầu cuối Mac và bash với globstar được kích hoạt, tôi tìm thấy giải pháp trên ('' '**/*. *' '') Thông tin và hoạt động tốt nhất. Câu trả lời được chấp nhận gây ra các bản sao của các mục trong thư mục trên cùng. Mẫu làm việc của tôi là: '' '" $ {path} "**/*. *' '' – mummybot
- 1. đệ quy thêm phần mở rộng tệp cho tất cả các tệp
- 2. Đệ quy lặp qua tất cả các tệp trong thư mục và thư mục con của nó trong Qt
- 3. Cách tạo một hàm đệ quy để sao chép tất cả các tệp và thư mục
- 4. TCL: Tìm kiếm đệ quy các thư mục con để nguồn tất cả các tệp .tcl
- 5. Lấy danh sách tất cả các tệp trong thư mục (đệ quy)
- 6. Tìm tất cả các tệp .php trong thư mục đệ quy
- 7. CoffeeScript - biên dịch tất cả các tệp .coffee trong thư mục hiện tại và tất cả các thư mục con
- 8. Đọc các tệp Android.mk trong thư mục con đệ quy
- 9. Mở tất cả các tệp trong một thư mục
- 10. Trong .Net, cách nhanh nhất để đệ quy tìm tất cả các tệp từ thư mục gốc là gì?
- 11. Cách đệ quy liệt kê tất cả các tệp và thư mục
- 12. Diff Một thư mục đệ quy, bỏ qua tất cả các tập tin nhị phân:
- 13. Thực hiện đệ quy trong các thư mục con
- 14. Xóa đệ quy các tệp và thư mục trong C#
- 15. Đệ quy in tất cả các tệp từ Vim
- 16. thư mục và thư mục con xcopy đệ quy và lọc chỉ tên tập tin bằng cách mở rộng
- 17. angularjs - mở rộng đệ quy
- 18. Tìm tất cả các tệp có thể ghi trong thư mục hiện tại
- 19. bash lặp qua tất cả tìm đệ quy trong thư mục con
- 20. Qt cách mở tệp trong thư mục hiện tại? hoặc có chuyện gì với điều này?
- 21. .gitignore bỏ qua tất cả các tệp sau đó đệ quy cho phép * .foo
- 22. Làm cách nào để liệt kê tất cả các tệp tga trong một thư mục (không đệ quy) trong Python?
- 23. Tại sao Xcode tạo đệ quy thư mục vô tận?
- 24. Đệ quy di chuyển tất cả các tệp của một loại cụ thể vào thư mục đích trong Bash
- 25. Mẫu đầu bếp có các thư mục đệ quy
- 26. Cách gzip tất cả các tệp trong tất cả các thư mục con trong bash
- 27. Làm thế nào để đệ quy đi qua tất cả các thư mục con và đọc tệp?
- 28. Hướng dẫn đệ quy mở rộng
- 29. Có một lệnh trình bao để đệ quy cho phép các thư mục và tệp không?
- 30. Làm thế nào để bạn lặp qua tất cả các tệp/thư mục đệ quy trong C++ chuẩn?
tìm kiếm thì sao? – Aif
Bash của tôi không xử lý '**/*. Ext'. Bạn có chắc chắn nó làm việc cho bạn? – tangens
@tangens Bạn đã bật tùy chọn 'globstar' theo câu trả lời của Dennis. – kenorb