Làm thế nào để tìm đường dẫn của một tập tin dựa trên tên của nó?


22

Tôi đang cố gắng tìm settings.xmltập tin trong máy Ubuntu của mình. Tôi không biết nó ở đâu, và nó nằm trong thư mục nào.

Tôi đã thử sử dụng cái này -

ls -R | grep settings.xml

Nhưng nó không chỉ cho tôi đường dẫn đầy đủ ở đó .. Có lệnh nào khác mà tôi cần thử có thể cho tôi đường dẫn đầy đủ không?


4
Bất cứ khi nào bạn nghĩ rằng giải pháp là phân tích đầu ra ls, bạn gần như chắc chắn làm sai cách .
terdon

Câu trả lời:


23

Để tìm kiếm nhanh (nhưng không dứt khoát):

locate -br '^settings.xml$'

Từ man locate:

   locate  reads  one or more databases prepared by updatedb(8) and writes
   file names matching at least one of the PATTERNs  to  standard  output,
   one per line.

   -b, --basename
          Match  only  the base name against the specified patterns.  This
          is the opposite of --wholename.
   -r, --regexp REGEXP
          Search for a basic regexp REGEXP.  No PATTERNs  are  allowed  if
          this  option  is used, but this option can be specified multiple
          times.

Các ^$đảm bảo rằng chỉ những tập tin có tên settings.xmlvà không phải tập tin có tên chứa settings.xml sẽ được in.

Bạn có thể cần lần đầu tiên chạy: updatedb(như root) để cập nhật / xây dựng cơ sở dữ liệu của locate.


@terdon, bạn làm tôi ngạc nhiên, tôi chưa bao giờ tìm đến man locatetrước đó !!! giả sử nó chỉ là công cụ tìm kiếm đơn giản. Cảm ơn nhiều.
user.dz

Vâng, đó là khá nhiều phản ứng của tôi khi lần đầu tiên tôi đọc trang người đàn ông :)
terdon

4
điều đáng chú ý là vai trò của updatedblệnh này - locatethường thất bại mà không có điều đó, đối với tôi, dù sao đi nữa
rm-vanda

@ rm-vanda, tôi đã cập nhật câu trả lời để đề cập updatedb. Cảm ơn bạn.
user.dz

4
locate '*/settings.xml'có lẽ dễ mang theo hơn trong số các triển khai khác nhau của locate(nếu có).
Stéphane Chazelas

15

Một tìm kiếm chậm nhưng ổn định thông qua hệ thống tập tin, nhưng dứt khoát.

find / -xdev -name settings.xml

Sẽ mất một thời gian và bạn có thể nhận được một số lỗi cấp phép nhưng nó sẽ đến đó. Nếu bạn đã có một số ý tưởng hơn, nơi nó có thể được bố trí thay đổi thư mục đầu tiên từ /đến/where/you/guess


4
Nối 2>/dev/nullvào cuối lệnh sẽ triệt tiêu tất cả đầu ra lỗi (bằng cách chuyển hướng stderr sang thiết bị null).
Tanner Swett

2
-xdev: Đừng xuống thư mục trên các hệ thống tập tin khác.
Pablo A

1

Thí dụ:

$ locate settings.xml
/usr/share/mime/application/x-cisco-vpn-settings.xml

0

cây là một cách tốt khác, nếu bạn không chắc chắn chính xác những gì bạn đang tìm kiếm và dường như nó sẽ nhanh hơn một chút-:

tree -f / | grep settings.xml

Các cờ hữu ích khác: -itrên grep sẽ bỏ qua trường hợp này, -hcho người có thể đọc được trên cây -

- trang người đàn ông có rất nhiều lựa chọn hữu ích -!


6
Không phải là một ý tưởng tốt, tree(1)cho thấy một cây nghệ thuật ASCII của các tệp, sau đó bị cắt xén bởi grep(1).
vonbrand

1
Có, nếu bạn sẽ sử dụng tree, bạn cũng có thể sử dụng find . type -fsẽ nhanh hơn.
terdon

0

Các tham số -la in phiên bản dài của ls và các thư mục là tốt. ls -la | grep settings.xml


2
Điều này vẫn sẽ không cung cấp cho bạn đường dẫn đầy đủ đến tập tin đã cho.
Kusalananda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.