Tìm tất cả các tệp có tên tệp bắt đầu bằng một chuỗi được chỉ định?


148

Tôi có một thư mục chứa khoảng 100000 tệp trong đó và tôi muốn thực hiện một số chức năng trên tất cả các tệp bắt đầu bằng một chuỗi được chỉ định, có thể khớp với hàng chục ngàn tệp.

Tôi đã thử

ls mystring*

nhưng điều này trả về với lỗi bash 'Quá nhiều đối số'. Kế hoạch tiếp theo của tôi là sử dụng

find ./mystring* -type f

nhưng điều này có cùng một vấn đề.

Mã cần phải trông giống như

for FILE in `find ./mystring* -type f`
do
    #Some function on the file
done

Thay vì một forvòng lặp, bạn nên đường ống findvào while.
Tạm dừng cho đến khi có thông báo mới.

Câu trả lời:


277

sử dụng

find . -name 'mystring*'

10
và để thực thi một số chức năng "find. -name 'mystring *' -exec [lệnh]" ví dụ xóa "find. -name 'mystring *' -exec rm {} \;"
Eldar

2
Trong đó {} là một trình giữ chỗ cho tên tệp :-) (để bạn có thể xây dựng hành động của riêng mình)
Sergio Tulentsev

1
Điều này dường như trả về tất cả các kết quả có chứa chuỗi? The
Brian Z

7
... Hoặc find . -iname 'mystring*'cho trường hợp tìm kiếm không nhạy cảm.
Frank Nocke

OP đề cập đến một thư mục duy nhất vì vậy hãy chèn -maxdepth 1trước khi -namegiới hạn tìm đến thư mục hiện tại
jacanterbury

27
ls | grep "^abc"  

sẽ cung cấp cho bạn tất cả các tệp bắt đầu (đó là những gì OP yêu cầu cụ thể) với chuỗi con abc.
Nó hoạt động chỉ trên thư mục hiện hành trong khi findhoạt động một cách đệ quy vào các thư mục phụ.

Để chỉ sử dụng findcho các tệp bắt đầu bằng chuỗi của bạn, hãy thử

tìm thấy . -tên 'abc' *


4

Nếu bạn muốn giới hạn tìm kiếm của bạn chỉ với các tệp bạn nên xem xét để sử dụng -type ftrong tìm kiếm của bạn

cố gắng sử dụng cũng -inamecho tìm kiếm không phân biệt chữ hoa chữ thường

Thí dụ:

find /path -iname 'yourstring*' -type f

Bạn cũng có thể thực hiện một số thao tác trên kết quả mà không cần ký hiệu ống hoặc xargs

Thí dụ:

Tìm kiếm tệp và hiển thị kích thước của chúng trong MB

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
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.