Tôi có một cấu trúc thư mục như thế này (đó là một đoạn nhỏ):Cách tìm/grep tất cả các đường dẫn trong đó tên thư mục khớp với "x" nhưng không phải "y" trên * nix?
└── test
└── cases
└── model
├── client
│ ├── socketsTest.coffee
├── server
│ └── socketsTest.coffee
└── shared
└── findersTest.coffee
Câu hỏi là, làm thế nào để bạn liệt kê tất cả những con đường mà kết thúc bằng .coffee
và không tồn tại trong thư mục client
?
Sau đây lệnh trả về tất cả các file phù hợp với .coffee
mà tồn tại trong thư mục server
:
find test -name "*Test.coffee" | egrep '/*server*/'
Nhưng những gì tôi thực sự cần là một regex phù hợp với tất cả mọi thứ trừ những gì trong thư mục client.
Cách sạch nhất để thực hiện điều này trên * nix là gì? Mục tiêu cuối cùng là để trả hồ sơ không phải bên trong một thư mục client
, vì vậy đối với cây trên đó sẽ là:
$ <find files except those a client folder>
test/cases/model/server/socketsTest.coffee
test/cases/model/shared/findersTest.coffee
Tôi đã cố gắng làm một cái gì đó như thế này nhưng không có may mắn:
find test -name "*Test.coffee" | egrep '*model/[^client]*'
Awesome, cảm ơn bạn ! Cả hai đều mới đối với tôi. –