Tại sao câu trả lời được chấp nhận là sai
Câu trả lời được chấp nhận bởi @seamus là sai vì grep -r --exclude-dir=<glob>
trận đấu với tên cơ sở mà theo định nghĩa không thể chứa dấu gạch chéo (slashes biến nó thành một no-op một cách hiệu quả vì không có tên cơ sở nào phù hợp).
Từ GNU Grep Manual:
--exclude-dir = glob
... Khi tìm kiếm đệ quy, bỏ qua bất kỳ thư mục con có tên cơ sở trận glob ...
Tại sao lại thực hiện nhiệm vụ ion có lẽ là sai
Tôi nghĩ rằng cấu trúc thư mục của OP không đại diện cho vấn đề cũng vì bởi vì nếu người ta ...
.
├── app
├── data
└── secondary
└── data
... và thư mục hiện hành là app
một cách đơn giản có thể làm:
> grep -r <search-pattern> data
Nó sẽ không tìm kiếm các thư mục secondary
như nó không phải bên data
.
gì câu hỏi dự định có thể là
Với cấu trúc thư mục với lồng nhau data
thư mục làm thế nào để tìm trong các cấp cao nhất data
nhưng không phải trong thư mục lồng nhau.
.
└── data
├── file.txt
├── folder1
│ └── folder2
│ ├── data
│ │ └── file.txt
│ └── file.txt
└── folder3
├── data
│ └── file.txt
└── file.txt
gì câu trả lời sẽ là
> grep -r --exclude-dir='data' <search-pattern> data/*
Lưu ý *
ở cuối. Nếu bỏ qua thư mục data
cấp cao nhất sẽ không được tìm kiếm.
Nguồn
2015-12-10 21:01:56
Chỉ dành cho phiên bản grep grep> = 2.5.1a – rymo
vậy làm cách nào để thực hiện điều đó trước gnu grep 2.5.1a? – simpleuser
'--exclude-dir = 'phụ/dữ liệu' là dự phòng tại đây. Xem câu trả lời của tôi dưới đây. –