Đổi tên nhiều tệp trong Mac OS X, xử lý hàng loạt


57

Tôi đã sử dụng để đổi tên tệp trong Linux thông qua lệnh đổi tên:

rename 's/old_pattern/new_pattern/g' *glob

Có điều gì tương tự trong Mac OS X (Snow Leopard) không?


Bài viết sau đây giải thích cách cài đặt renametrên Mac OS X: macosxhints.com/article.php?story=20050630022203488
Paul R

Các backticks không hiển thị trong bình luận của bạn - có lẽ bạn nên thêm câu này dưới dạng câu trả lời hoặc chỉnh sửa câu hỏi của bạn để đưa vào giải pháp của bạn.
Paul R

1
Giải pháp nhanh nhất tốt nhất mà tôi từng tìm thấy là sử dụng Máy tự động tích hợp. Kiểm tra bài viết này để dễ dàng từng bước trợ giúp: tuaw.com/2008/11/11/ trên
nilay

Tôi sẽ bỏ phiếu cho câu trả lời của nilay nếu đó không phải là một bình luận ...
voidstate

Câu trả lời:


49

Với Homebrew , trình quản lý gói cho OS X:

brew install rename 

Sau đó, bạn có thể chạy các renamelệnh tương tự như trong Linux.


3
Bạn cũng có thể sử dụng gói MacPorts: port install p5-file-đổi tên
Miquel Adrover

2
@MiquelAdrover: Nhưng với cổng bạn cần sử dụng rename-5.22(trong đó 22 là phiên bản đã cài đặt) thay vìrename
mems

Bạn có thể đổi tên liên kết tượng trưngsudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
Ako

26

Sử dụng sức mạnh của ZSH một cách khôn ngoan (nhập zshvào thiết bị đầu cuối nếu bạn là một trong những linh hồn đáng thương không sử dụng nó theo mặc định):

autoload zmv
zmv '(*).htm' '$1.html'

ZMV tuân theo cú pháp MMV .


Nhưng điều đó cũng cho phép thay thế regex? Đây dường như chỉ là một số loại vỏ được tăng cường.
toán

4
@brubelsabs: Có, zmv có thể thay thế regrec . Đối với các tệp khớp *user*.html, thay đổi tiện ích mở rộng thành .htmlvà thay đổi tất cả các lần xuất hiện rcthành final: zmv '(*user*).htm' '${1//rc/final}.html' @ghoppe: Tôi nghĩ ví dụ zmv trong câu trả lời của bạn cần -whoặc dấu ngoặc đơn quanh ký tự đại diện.
Chris Johnsen

Tôi thực sự thích đề xuất này vì bạn không cần cài đặt thêm bất cứ thứ gì trên máy Mac (như brew), nhưng nó cho phép bạn sử dụng cú pháp như mmv dễ dàng.
Hay

+1 Đẹp. Một vài sự khác biệt từ regex tôi đã từng sử dụng: 1) sử dụng *thay vì .*để có được tất cả. *?dường như làm việc như không tham lam .*?. 2) đối với tôi, ^$bắt đầu và kết thúc chuỗi dường như khiến nó không khớp với nhau
user56reinstatemonica8

21

Vụng về tôi:

for i in *.yourfiles; do mv "$i" "`echo $i | sed 's/old/new/g'`"; done 

Và nếu bạn muốn sử dụng nó như tôi thường làm theo cách này:

rename 's/old/new/' *.files

Tôi khuyên bạn nên sử dụng tập lệnh litte này trong ~ / bin / đổi tên:

#!/usr/bin/env zsh
SUBSEXPR=$1
shift
for i in $@; do mv $i `echo "$i" | sed $SUBSEXPR`; done

kịch bản của bạn không làm việc cho tôi "đổi tên ACDC ACDC ACDC *" result-> "ssed: không thể đọc ACDC: Không có tập tin hoặc thư mục", tôi cài đặt đổi tên util từ linux và bây giờ nó hoạt động anwyay
Holms

5

Bạn có thể thử cài đặt MacPorts và cài đặt renameutilsgói:

renameutils @ 0.10.0 (sysutils)

renameutils là một bộ các chương trình được thiết kế để làm cho việc đổi tên tệp nhanh hơn và ít cồng kềnh hơn


gói này không có lệnh "đổi tên".
juanpablo

1
tôi đã không nói rằng nó làm. qmvcó vẻ như nó làm công việc
lajuette

qmvlà một công cụ tuyệt vời, trong khi có quá nhiều công việc để đổi tên regex đơn giản, thật tuyệt vời khi đặt tên thông minh và di chuyển số lượng lớn các tệp tùy ý
sapht

4

Có nhiều phiên bản đổi tên . Có vẻ như bạn đang tìm kiếm một cái dựa trên Perl.

Một phiên bản của tiện ích này đi kèm với mô-đun File :: Rename Perl. Bạn có thể cài đặt nó với một cái gì đó như sudo cpan -i File::Rename.

Hoặc, bạn có thể đổi tên từ gói perl của Debian . Nó chỉ là một tập tin duy nhất để tải về. Đặt nó bất cứ nơi nào bạn thích và chmod nó để nó có thể thực thi được.


Một thay thế là công cụ zmv đi kèm với zsh . Nó không có cùng một cú pháp, nhưng nó đi kèm với hệ điều hành của bạn và nó có thể dễ dàng xử lý nhiều trường hợp phổ biến.


những đổi tên perl là những gì câu hỏi này cho thấy là một ví dụ.
quack quixote

2

Trên máy Mac, tôi sử dụng Aristotle Pagaltzis có sẵn miễn phí rename, giống như Debian dựa trên Perl. Bạn có thể lấy nó ở đây . Hoặc truy cập vào đây để đọc nó đầu tiên - luôn luôn là một ý tưởng tốt.

Bạn cần đặt nó ở đâu đó trong bạn $PATHvà làm cho nó có thể thực thi được ( chmod +x rename) và sau đó bạn tốt để đi.


2

Điều này không nên khó khăn nhưng rõ ràng là như vậy. Ví dụ, tôi muốn đổi tên tất cả phần mở rộng của tệp từ aiff thành aifc.

find . -iname "*.aiff" -exec bash -c 'mv "$0" "${0%\.aiff}.aifc"' {} \;

1

Nếu bạn đang tìm kiếm một GUI, hãy thử Name Mangler . Nó có tính năng "xem trước" cho biết điều gì sẽ xảy ra nếu bạn thực hiện theo cách đổi tên.


1

lệnh tương đương trong renamer (đa nền tảng) là

$ renamer --regex --find 'old_pattern' --replace 'new_pattern' *glob

0

Nếu bạn thích đa văn bản của Sublime Text, bạn có thể sử dụng nó với qmv:

tập tin qmv --editor = "/ usr / bin / s3 -w"


0

Tôi chỉ đi trước và tìm thấy yêu thích của tôi mà tôi đã thấy được gọi là perl-rename đưa ra renamelệnh trong đó sự trợ giúp trông như thế này:

Usage: rename [-v] [-n] [-f] perlexpr [filenames]

Đó là cách tôi biết tôi có thứ tôi thích.

Đối với Mac, ngay cả trong Homebrew họ cũng có những người khác mà tôi chỉ nhớ mơ hồ gặp sự cố. Vì vậy, nó không phải là renamegói, và nó cũng không phải là renameutilsgói nongnu .

Có nó từ đây và chỉ cần cài đặt như họ đề cập: https://github.com/subogero/rename

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.