Tôi muốn tìm kiếm tất cả các tệp có phần mở rộng .sql trong các thư mục và thư mục con (đệ quy).
Tôi có thể làm cái này như thế nào?
Tôi muốn tìm kiếm tất cả các tệp có phần mở rộng .sql trong các thư mục và thư mục con (đệ quy).
Tôi có thể làm cái này như thế nào?
Câu trả lời:
Hoặc là...
find $directory_name -name \*.sql
Ví dụ
find / -name \*.sql
Hoặc là
find ~ \*.sql
(trong đó ~ tương đương với / home / your_username /) hoặc ...
find /usr/local/share/ \*.sql
và kể từ đó trở đi.
Chạy cái này trong dòng lệnh:
cd / && find | grep '\.sql$'
Thay đổi '/' thành thư mục bạn muốn tìm kiếm.
Các find
lệnh có khả năng hoàn thành nhiệm vụ mà không grep (sử dụng tùy chọn bổ sung), nhưng tôi thấy việc sử dụng trên thuận tiện hơn.
Theo thứ tự, lệnh trên:
cd /
)find
)| grep '\.sql$'
)find
đã có khả năng lọc
Tôi biết rằng đây là một bài viết cũ, nhưng tôi khá mới về điều này và tôi đã tìm thấy một cách dễ dàng để tìm tất cả các tệp của một phần mở rộng nhất định trong một thư mục và các thư mục con của nó. Vâng, trước tiên bạn điều hướng đến parent Directory
lúc đó find . -name '*.sql'
và điều đó sẽ tìm thấy cho bạn tất cả các tệp có phần mở rộng .sql trong các thư mục và thư mục con của nó.
Trong trường hợp của tôi, tôi muốn xóa tất cả các tệp .xml trong thư mục và các thư mục con của nó, vì vậy những gì tôi đã làm nhiều hơn là tôi đã thêm xóa như ở đâyfind . -name '*.xml' | xargs rm
Hy vọng điều này sẽ giúp ai đó :)
find
hiểu -delete
lệnh. Không cần liên quan rm
. Hoặc bạn có thể sử dụng -exec
lệnh để gọi nó trực tiếp mà không cần đường vòng qua đường ống và xargs
.
locate -br \\.sql$ | egrep '^/folder/path/'
Nếu nó chưa được cài đặt, thì trước đó hãy cài đặt nó với:
sudo apt install mlocate
mlocate.db
không được thiết lập ngoài hộp trong Ubuntu (tôi xin lỗi). Ngoài ra, tại sao không đơn giản locate '/folder/path/*.sql'
?
locate
có một số cài đặt khác với regex được sử dụng trongegrep
locate
phù hợp với biểu thức toàn cầu như /folder/path/*.sql
, không phải biểu thức thông thường.
man locate
tôi nhận được -r, --regexp REGEXP - Search for a basic regexp REGEXP
nên tôi cho rằng đó là một regex. Dù sao, tôi đã thử "biểu hiện toàn cầu" của bạn nhưng không được, tôi xin lỗi
--regex
không được chỉ định, PATTERN
s có thể chứa các ký tự toàn cầu. Từ ( nguồn )