Sự khác biệt trong cli Nhận thấy giữa giữa debian và macOS


0

Tôi vừa chuyển fD mDebian sang macOS sau khi laptop của tôi bị hỏng. May mắn thay, tôi đã cứu được .zshrc của mình bằng các bí danh của mình, tuy nhiên, có hai bí danh sử dụng "find" dường như không hoạt động trong macOS và tôi không chắc chắn sự khác biệt là gì.

Lệnh đầu tiên được cho là để di chuyển tất cả các tệp fro msubdirectories vào thư mục hiện tại và nó hoạt động hoàn hảo trên debian:

alias mup='find -type f -exec mv {} . \;'

Tuy nhiên, trên macOS tôi nhận được "tùy chọn tìm kiếm: bất hợp pháp - t"

Tương tự, để thay đổi tập tin kết thúc từ JPG sang jpg tôi đã sử dụng

alias jprn="find -name '*.JPG' -exec rename "s/.JPG/.jpg/g" \{\} \;"

dẫn đến một "tìm: tùy chọn bất hợp pháp - n"

Thật không may, lỗi này khá bí ẩn, vì vậy tôi thậm chí không biết bắt đầu tìm giải pháp ở đâu, vì tất cả các tay cầm dường như đều chính xác dựa trên con người.

Bất kỳ thông tin hoặc con trỏ sẽ được nhiều đánh giá cao!

Cảm ơn

Câu trả lời:


1

cho mup, findcần một pathđối số:

alias mup='find . -type f -exec mv {} . \;'

cho jprn, findcần một pathđối số. Ngoài ra, không có renamelệnh nào trong macOS (bạn có thể cài đặt nó với Homebrew ). Đây là điều tốt nhất tôi có thể nghĩ ra vào lúc này:

alias jprn='find . -name "*.JPG" -print | while read -r f; do mv "$f" "${f/%JPG/jpg}"; done'

${f/%JPG/jpg}thay thế $fkết thúc JPGbằng jpg, xem phần cuối của phần "Mở rộng tham số" trong man zshexpn.


1
Tôi khuyên bạn nên sử dụng ... -print0 | while IFS= read -r -d '' f; do ...để tránh rắc rối khi tên tệp chứa khoảng trắng và các ký tự vui nhộn khác (thường thấy trên macOS). Xem BashFAQ # 20: Làm cách nào tôi có thể tìm và xử lý an toàn tên tệp chứa dòng mới, dấu cách hoặc cả hai?
Gordon Davisson
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.