Làm thế nào tôi có thể tìm kiếm một tên thẻ hoang dã trong tất cả các thư mục con?


26

Làm thế nào tôi có thể tìm kiếm một tên thẻ hoang dã trong tất cả các thư mục con? Điều gì sẽ tương đương với lệnh DOS: dir *pattern* /strong * nix?

Câu trả lời:


40

Bạn có thể sử dụng find. Ví dụ: nếu bạn muốn tìm tất cả các tệp và thư mục có abcdtrong tên tệp, bạn có thể chạy:

find . -name '*abcd*'

12

Zsh:

ls -ld -- **/*abcd*

Ksh93:

set -o globstar     # put this line in your ~/.kshrc
ls -ld -- **/*abcd*

Bash ≥4:

shopt -s globstar   # put this line in your ~/.bashrc
ls -ld -- **/*abcd*

Yash:

set -o extendedglob # put this line in your ~/.yashrc
ls -ld -- **/*abcd*

tcsh:

set globstar
ls -ld -- **/*abcd*

cá:

ls -ld -- **abcd*

(hãy cẩn thận một số những vỏ sẽ theo liên kết tượng trưng khi giảm dần cây thư mục, một số trong những người không thích zsh, yashhoặc tcsh***/*abcd*để làm điều đó).

Portable (ngoại trừ các hệ thống rất cũ; OpenBSD mất nhiều thời gian nhưng cuối cùng cũng hỗ trợ exec … +kể từ 5.1):

find . -name '*abcd*' -exec ls -ld {} +

Không phải POSIX nhưng hoạt động trên * BSD, Linux, Cygwin, BusyBox:

find . -name '*abcd*' -print0 | xargs -0 ls -ld

Lưu ý rằng ngoại trừ trong một số BSD, nếu không tìm thấy tệp phù hợp, ls -ldsẽ được chạy mà không có đối số, vì vậy sẽ liệt kê .. Với một số xargstriển khai, bạn có thể sử dụng -rtùy chọn để khắc phục điều đó.


shopt -s globalstar làm gì ??
capybaralet

@ user2429920 gnu.org/software/bash/manual/ Kẻ và nhấp qua để gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin sau đó cuộn xuống globstar.
Gilles 'SO- ngừng trở nên xấu xa'
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.