Tại sao ls -a không hiển thị các tệp mà công cụ tìm kiếm không hiển thị?

Aug 17 2020

Khi điều hướng đến /usr/local/binmột tệp có tên "R", bạn có thể thấy:

Nhưng khi cd /usr/local/binls(hoặc ls -a), chúng tôi thấy một danh sách dài các tệp, nhưng không có tệp nào được gọi là R:

Tôi đã rất ngạc nhiên vì điều này - rõ ràng công cụ tìm có thể thấy các tệp lskhông thể. Tại sao không ls -ahiển thị tất cả các tệp mà công cụ tìm thấy?

Trả lời

20 Allan Aug 17 2020 at 07:55

Nó ở đó, nhưng bạn không nhìn thấy nó vì nó không phải là nơi bạn mong đợi vì sắp xếp trong Finder khác với sắp xếp trong Bash / Zsh. Về cơ bản Finder thực hiện tìm kiếm không phân biệt chữ hoa chữ thường trong khi Bash phân biệt chữ hoa chữ thường. Ví dụ: "a" theo sau "Z"

Nếu bạn đang tìm kiếm một tệp cụ thể và bạn biết trường hợp này, bạn có thể sử dụng một chút lsphép thuật để tìm ra nó ...

$ ls -Ad R*

Ở đâu...

  • -A= Liệt kê tất cả các tệp, ngoại trừ ...
  • -d = Coi thư mục là tệp và không tìm kiếm chúng một cách đệ quy
  • R* = Tất cả các tệp bắt đầu bằng chữ "R"