Trang chủ » làm thế nào để » Tìm kiếm hình ảnh PNG lớn hơn x pixel qua Linux Shell

    Tìm kiếm hình ảnh PNG lớn hơn x pixel qua Linux Shell

    Khi bạn đang cố gắng thay đổi thiết kế trang web của mình, bạn phải quan tâm đến chiều rộng của hình ảnh trong nội dung bài viết của bạn. Tôi đã có những ảnh chụp màn hình lớn nổi tiếng trên hầu hết các bài báo tôi đã viết, vì vậy nếu tôi muốn tăng thanh bên, điều quan trọng là phải tìm ra những bức ảnh nào sẽ quá rộng để phù hợp với thiết kế mới.

    Vì tôi là một lập trình viên, tôi có thể dễ dàng viết một ứng dụng nhỏ để làm việc này, nhưng nó khiến tôi bắt đầu nghĩ rằng tại sao tôi không thể làm điều này trên dòng lệnh Linux?

    Điều đầu tiên tôi phát hiện ra là hình ảnh PNG hiển thị dữ liệu kích thước khi bạn chạy lệnh tập tin trên mạng Cameron trên chúng:

    $ file image3.png
    image3.png: Dữ liệu hình ảnh PNG, 613 x 657, RGBA 8 bit / màu, không xen kẽ

    Rất hữu ích vì 99% hình ảnh trên trang web này ở định dạng PNG. Vì vậy, bây giờ để ném nó trong một vòng lặp cho tất cả các tệp trong thư mục tải lên của tôi:

    $ cho f trong * .png; làm tệp $ f; xong

    image.png: Dữ liệu hình ảnh PNG, 631 x 185, RGBA 8 bit / màu, không xen kẽ
    image1.png: Dữ liệu hình ảnh PNG, 631 x 96, RGBA 8 bit / màu, không xen kẽ
    image10.png: Dữ liệu hình ảnh PNG, 375 x 395, RGBA 8 bit / màu, không xen kẽ
    image11.png: Dữ liệu hình ảnh PNG, 484 x 241, RGBA 8 bit / màu, không xen kẽ
    -bắn tỉa-

    Điều này hữu ích hơn, nhưng tôi phải kéo dữ liệu vào Excel hoặc một ứng dụng tương tự để sắp xếp dữ liệu, vì vậy tôi quyết định sử dụng lệnh linux linux cut cut để kéo ra cột chiều rộng.

    Bạn sẽ nhận thấy tham số -f5 yêu cầu cắt để lấy cột thứ năm và -d \ với khoảng trắng sau khi thông báo cắt để sử dụng khoảng trắng làm dấu phân cách. Dấu gạch chéo \ là ký tự thoát để báo cho shell sử dụng khoảng trắng làm ký tự và không phải là khoảng trắng.

    $ cho f trong * .png; làm tệp $ f | cut -f5 -d \; xong

    631
    631
    375
    484
    -bắn tỉa-

    Đầu ra không hoàn toàn hữu ích, phải không? Chúng ta hãy đẩy câu lệnh bash if và sau đó chỉ hiển thị đầu ra của lệnh tệp khi chiều rộng lớn hơn 600 pixel.

    Lưu ý các dấu '(backtick) xung quanh tệp tin $ f | cắt phần Giới hạn, chỉ ra rằng các lệnh bên trong 'sẽ được xử lý dưới dạng một đầu ra duy nhất và được đưa vào câu lệnh if, trong đó chúng ta sử dụng -gt (lớn hơn). Cũng lưu ý rằng bạn cần khoảng trắng xung quanh hai bên của dấu ngoặc []

    cho f trong * .png; do if ['file $ f | cắt -f5 -d \ '-gt 600]; sau đó nộp $ f; fi; xong

    image.png: Dữ liệu hình ảnh PNG, 631 x 185, RGBA 8 bit / màu, không xen kẽ
    image1.png: Dữ liệu hình ảnh PNG, 631 x 96, RGBA 8 bit / màu, không xen kẽ
    image17.png: Dữ liệu hình ảnh PNG, 638 x 340, RGBA 8 bit / màu, không xen kẽ
    image18.png: Dữ liệu hình ảnh PNG, 608 x 448, RGBA 8 bit / màu, không xen kẽ
    -bắn tỉa-

    Bây giờ chúng tôi có một danh sách tất cả các tệp rộng hơn 600 pixel. Cuối cùng, bạn có thể điều chỉnh tập tin trên mạng $ fF để chỉ lặp lại tên tệp nếu bạn cần sao chép hoặc di chuyển chúng sang nơi khác:

    cho f trong * .png; do if ['file $ f | cắt -f5 -d \ '-gt 600]; sau đó lặp lại $ f; fi; xong

    hình ảnh
    hình ảnh1.png
    hình ảnh17.png
    hình ảnh18.png
    -bắn tỉa-

    Vỏ Linux cực kỳ mạnh mẽ! Giải pháp này không thực sự thiết thực với mọi người, nhưng thật tốt khi biết cách làm việc với trình bao để bạn có thể hoàn thành loại nhiệm vụ này khi bạn cần.