Câu hỏi Làm thế nào để tìm một thư mục trên Linux?


Tôi có một VPS với Suse Linux 10.3.

Tôi đã đăng nhập qua SSH / putty và đang cố gắng tìm vị trí của các tệp web của tôi.

Vì tôi đang tải lên qua FTP trong một thư mục có tên httpdocs, Tôi cho rằng thư mục này tồn tại ở đâu đó.

Các tìm kiếm trên google của tôi đã dạy tôi làm điều này, đi tới thư mục gốc của tôi và nhập:

find httpdocs -type d

nhưng nó nói "Không có tập tin hoặc thư mục".

Làm thế nào tôi có thể tìm thấy thư mục này?


399
2018-06-28 17:51


gốc


Trong trường hợp ai đó tự hỏi, lệnh trong câu hỏi sẽ tìm tất cả các thư mục (-type d) trong mục nhập thư mục httpdocs (liên quan đến thư mục làm việc hiện tại, thông thường nhưng không nhất thiết phải là một thư mục). Nó không thành công với thông báo lỗi vì không có mục nhập thư mục httpdocs trong thư mục gốc của hệ thống và do đó không có điểm bắt đầu cho tìm kiếm. - Daniel Beck♦


Các câu trả lời:


Nó là:

find / -type d -name 'httpdocs'

tham số đầu tiên "/" là nơi cần tìm, trong trường hợp này "/" là toàn bộ hệ thống.

-name có thể được đặt tên để bỏ qua trường hợp

cũng không phải loại

sử dụng : người đàn ông tìm thấy để có thêm tùy chọn


546
2018-06-28 18:00



tìm / -name 'httpdocs' hoạt động tốt nhờ - Edward Tanguay
Nó có thể không quan trọng đối với các tìm kiếm đơn giản, nhưng đối với các lệnh tìm phức tạp hơn, cần lưu ý rằng mọi thứ được đánh giá theo thứ tự chúng nằm trên dòng lệnh. Vì vậy, bạn có thể muốn có -type d (chỉ thư mục) trước tên, để tăng tốc độ mọi thứ. Một lần nữa, điều này có thể không quan trọng nhiều ở đây, nhưng khi nhận được vào các tìm kiếm phức tạp hơn, nó có thể cải thiện tốc độ tìm kiếm đáng kể. - Dominic Eidson
Trên thực tế, -name kiểm tra nhanh hơn hầu hết các thử nghiệm khác kể từ -name được so khớp với danh sách của thư mục đã được tải từ đĩa và các kiểm tra khác cần thực hiện stat(2) để nhận thông tin tệp. Sau lần đầu tiên stat() gọi cho một tệp, một bài kiểm tra tiếp theo có được từ bộ nhớ, ví dụ: -type f -mtime -10. - Arcege
Nếu bạn định thực hiện tìm kiếm trên toàn bộ hệ thống tập tin, đặc biệt là một máy chủ, thì nó thường là tốt để sử dụng nicedo đó, việc tìm kiếm không lấy quá nhiều tài nguyên từ các quy trình quan trọng hơn: nice find / ... - Arcege
Tôi sẽ nối thêm 2> / dev / null để tránh các kết quả tìm kiếm của tôi bị ẩn trong tất cả các lỗi cho phép. - Jason Yeo


lệnh này sẽ giúp bạn có được những gì bạn đang tìm kiếm:

find / -type d -name httpdocs

sẽ tìm kiếm từ thư mục gốc của máy chủ của bạn cho các thư mục có tên httpdocs hoặc nếu bạn chỉ muốn tìm kiếm từ thư mục hiện tại, hãy thay thế '/' bằng '.'

Một lệnh khác bạn có thể thử là xác định vị trí bạn sẽ làm một cái gì đó như:

locate httpdocs

60
2018-06-28 18:00



xác định vị trí httpdocs cho tôi biết "locate: command not found" - Edward Tanguay
Đối với những người sử dụng lệnh "định vị" (cho rằng nó tồn tại trong hệ thống của bạn), hãy chắc chắn rằng cơ sở dữ liệu mà nó tra cứu là cập nhật; thông thường một số công việc cron sẽ chăm sóc nó. Nếu không, hãy chạy "updatedb" (là root). Sau đó chạy "locate <somefile>" cần thiết của bạn. Điều này là cần thiết cho việc tìm kiếm các tệp / dir được thêm gần đây. - David Ramirez
1 để xác định vị trí. nó là rất nhiều nhanh hơn nhưng chỉ khi chỉ mục của nó được cập nhật. May mắn thay, một cái gì đó như "httpdocs" sẽ không thay đổi vị trí thường xuyên. Nếu bạn đang lập kế hoạch liên tục tìm kiếm các tệp trên máy tính, bạn nên dành vài phút để thiết lập công việc cron cập nhật. - Doug Harris
Cũng trong nhiều trường hợp, xác định vị trí sẽ trả lại quá nhiều kết quả vì tất cả các tệp 100k trong thư mục đó sẽ hiển thị. Trong trường hợp cụ thể này nếu mỗi người dùng có httpdocs của riêng họ với 100 hoặc 1000 của các tập tin kết quả OP muốn có thể sẽ bị mất. - Jistanidiot
1 để xác định vị trí ... Tôi giữ cơ sở dữ liệu của tôi cập nhật để lệnh này rất hữu ích ... Ý tưởng tuyệt vời. - nicorellius


find / -type d -name httpdocs 2> /dev/null

Điều này sẽ loại bỏ tất cả các thông báo lỗi bạn có khả năng (đọc, luôn luôn) nhận được khi không làm điều này như là người dùng root. Bạn nên làm theo cách này.


26
2017-11-08 01:04



Các 2> /dev/null tùy chọn là rất hữu ích. Nếu không, có thể khó nhìn thấy kết quả mong muốn ... - Gottlieb Notschnabel
Xem thêm Làm thế nào tôi có thể loại trừ tất cả các tin nhắn "cho phép từ chối" từ "tìm"? - galath


Điều quan trọng là phải biết tham số -iname để tìm kiếm các mẫu "phân biệt chữ hoa chữ thường" và sử dụng ký tự đại diện: *,?, V.v.

Hai ví dụ:

Tìm kiếm tất cả các tệp từ / root chứa chuỗi "Linux", phân biệt chữ hoa chữ thường:

find  /root -type f -iname "*linux*"

Tìm kiếm tất cả các thư mục từ / root chứa chuỗi "Linux", phân biệt chữ hoa chữ thường:

find  /root -type d -iname "*linux*"

Được trích xuất từ ​​đây:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html


10
2017-12-06 23:50



Câu hỏi này là về cách tìm một thư mục có tên bạn biết, không phải cách tìm thư mục có tên bạn biết (xấp xỉ). Bên cạnh đó, câu trả lời được chấp nhận (từ hơn 6 năm trước!) Đã đề cập -iname như một sự thay thế không phân biệt chữ hoa chữ thường -name. - G-Man


bạn gần như có nó. cú pháp chính xác sẽ là:

find / -type d -name httpdocs

Thư mục có khả năng theo /var/www/


9
2018-06-28 18:02



cho tôi biết "đường dẫn phải đứng trước biểu thức" - Edward Tanguay