Zmiana nazwy wielu plików w systemie Mac OS X, przetwarzanie wsadowe


57

Kiedyś zmieniałem nazwę pliku w systemie Linux za pomocą polecenia zmiany nazwy:

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

Czy jest coś podobnego w Mac OS X (Snow Leopard)?


Poniższy artykuł wyjaśnia, jak zainstalować renamew systemie Mac OS X: macosxhints.com/article.php?story=20050630022203488
— Paul R

Backticks nie pojawiają się w twoim komentarzu - prawdopodobnie powinieneś dodać to jako odpowiedź lub edytować swoje pytanie, aby uwzględnić swoje rozwiązanie.
— Paul R

1
Najlepszym szybkim rozwiązaniem, jakie kiedykolwiek znalazłem, jest użycie wbudowanego Automatora. Sprawdź ten artykuł, aby uzyskać łatwą pomoc krok po kroku: tuaw.com/2008/11/11/…
— nilay

Głosowałbym za odpowiedzią Nilay, gdyby nie był to komentarz ...
— voidstate

Odpowiedzi:


49

W Homebrew menedżer pakietów dla OS X:

brew install rename 

Następnie możesz uruchomić te same renamepolecenia, co w systemie Linux.


3
Możesz także użyć pakietu MacPorts: port install p5-file-rename
— Miquel Adrover

2
@MiquelAdrover: Ale z portem musisz użyć rename-5.22(gdzie 22 to zainstalowana wersja) zamiastrename
— mems

Możesz zmienić nazwę dowiązania symbolicznegosudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
— Ako

26

Mądrze używaj mocy ZSH (wpisz zshterminal, jeśli jesteś jedną z tych biednych dusz, które domyślnie go nie używają):

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

ZMV działa zgodnie ze składnią MMV .


ale czy to również umożliwia wymianę wyrażeń regularnych? Wydaje się, że to tylko rodzaj ulepszonego globowania powłoki.
— matematyka

4
@brubelsabs: Tak, zmv może zastąpić wyrażenia regularne . W przypadku pasujących plików *user*.htmlzmień rozszerzenie na .htmli zmień wszystkie wystąpienia rcna final: zmv '(*user*).htm' '${1//rc/final}.html' @ghoppe: Myślę, że przykład zmv w twojej odpowiedzi wymaga -wlub nawiasów otaczających jego symbol wieloznaczny.
— Chris Johnsen

Naprawdę podoba mi się ta sugestia, ponieważ nie musisz instalować niczego więcej na komputerze Mac (jak napar), ale pozwala ona na użycie łatwej składni mmv jak.
— Hay

+1 ładne. Kilka różnic od wyrażeń regularnych, do których jestem przyzwyczajony: 1) używaj *zamiast .*uzyskiwać wszystkie. *?wydaje się działać jak chciwy .*?. 2) dla mnie ^i $na początku i na końcu łańcucha wydawało się, że powoduje, że nic nie pasuje
— user56reinstatemonica8

21

Niezdarny ja:

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

A jeśli chcesz go używać tak jak ja często w ten sposób:

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

Polecam użyć tego skryptu litte w ~ / bin / rename:

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

skrypt nie działa na mnie „zmień ACDC ACDC ACDC *” result-> „ssed: nie można odczytać ACDC: Nie ma takiego pliku lub katalogu”, zainstalowałem przemianować util z linux i teraz działa anwyay
— holms

5

Możesz spróbować zainstalować MacPorts i zainstalować renameutilspakiet:

renameutils @ 0.10.0 (sysutils)

renameutils to zestaw programów zaprojektowanych w celu przyspieszenia i mniej kłopotliwej zmiany nazw plików


ten pakiet nie ma polecenia „zmień nazwę”.
— juanpablo

1
nie powiedziałem, że tak. qmvwygląda na to, że to działa.
— lajuette

qmvto świetne narzędzie, choć trochę za dużo pracy na proste zmiany wyrażeń regularnych, ale fantastycznie nadaje się do inteligentnego nazywania i przenoszenia dużej liczby dowolnych plików
— sapht

4

Istnieją różne wersje zmiany nazwy . Wygląda na to, że szukasz Perla.

Jedna wersja tego narzędzia jest dostarczana z modułem File :: Rename Perl. Możesz go zainstalować za pomocą czegoś takiego sudo cpan -i File::Rename.

Lub możesz zmienić nazwę z pakietu perla Debiana . To tylko jeden plik do pobrania. Umieść go tam, gdzie chcesz i chmod , aby był wykonywalny.


Alternatywą jest narzędzie zmv dostarczane z Zsh . Nie ma tej samej składni, ale jest dostarczany z systemem operacyjnym i może łatwo zająć się wieloma typowymi przypadkami.


rename Perl co to pytanie pokazuje jako przykład.
— quack quixote

2

Na komputerach Mac używam swobodnie dostępnych Aristotle Pagaltzis rename, które podobnie jak Debian, są oparte na Perlu. Możesz go zdobyć tutaj . Lub odwiedź tutaj, aby go najpierw przeczytać - zawsze dobry pomysł.

Musisz umieścić to gdzieś w swoim $PATHpliku i uczynić go wykonywalnym ( chmod +x rename), a potem możesz zacząć.


2

Nie powinno to być trudne, ale najwyraźniej tak jest. Przykład: chcę zmienić nazwę całego rozszerzenia pliku z aiff na aifc.

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


1

równoważne polecenie w zmianie nazwy (wieloplatformowe) to

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

0

Jeśli podoba Ci się zaznaczenie Sublime Text, możesz użyć go z qmv:

qmv --editor = Pliki „/ usr / bin / s3 -w”


0

Właśnie poszedłem naprzód i znalazłem moją ulubioną, którą widziałem, zwaną per-rename, podając renamepolecenie, w którym pomoc wygląda następująco:

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

W ten sposób wiem, że mam ten, który lubię.

W przypadku komputerów Mac nawet w Homebrew mają inne, w których ledwie pamiętam, że miałem problemy. Więc to nie jest renamepakiet i nie jest to także renameutilspakiet nongnu .

Mam go stąd i właśnie wykonałem instalację, jak wspomniano: https://github.com/subogero/rename

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.