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)?

matematyka
źródło
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.

juanpablo
źródło
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 .

ghoppe
źródło
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
matematyka
źródło
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

lajuette
źródło
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.

Chris Johnsen
źródło
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ąć.

Telemachus
źródło
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"' {} \;
AlexanderN
źródło
1

Jeśli szukasz GUI, wypróbuj Name Mangler . Ma funkcję „podglądu”, która pokazuje, co się stanie, jeśli zmienisz nazwę.

Peter Murray
źródło
1

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

$ renamer --regex --find 'old_pattern' --replace 'new_pattern' *glob
Lloyd
źródło
0

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

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

Gordon Wells
źródło
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

Pysis
źródło