Mac OS X'teki birçok dosyayı yeniden adlandırma, toplu işleme


57

Linux'ta dosyayı bir rename komutu ile yeniden adlandırmak için kullanılır:

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

Mac OS X'te (Snow Leopard) benzer bir şey var mı?


Aşağıdaki makalede renameMac OS X'e nasıl yükleneceği açıklanmaktadır : macosxhints.com/article.php?story=20050630022203488
Paul R

Geri tepmeler yorumunuzda görünmüyor - muhtemelen bunu bir cevap olarak eklemelisiniz ya da sorunuzu düzenlemek için sorunuzu düzeltmelisiniz.
Paul R

1
Şimdiye kadar bulduğum en hızlı çözüm, yerleşik Automator'ı kullanmaktı. Adım adım yardım ile kolay adım için bu makaleye göz atın: tuaw.com/2008/11/11/…
nilay

Yanıtlar:


49

OS X için paket yöneticisi olan Homebrew ile :

brew install rename 

Ardından renameLinux ile aynı komutları çalıştırabilirsiniz .


3
MacPorts paketini de kullanabilirsiniz: port install p5-file-rename
Miquel Adrover 13:14

2
@MiquelAdrover: Ancak port yerine kullanmanız gereken rename-5.22(yüklü olan sürüm rename
22'dir

Sembolik bağlantıyı yeniden adlandırabilirsinizsudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
Ako

26

ZSH'in gücünü akıllıca kullanın ( zshterminali, varsayılan olarak kullanmayan zayıf ruhlardan biriyseniz yazın ):

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

ZMV, MMV sözdizimini takip eder .


ama bu regex değişimine de izin veriyor mu? Bu, sadece bir çeşit gelişmiş kabuk küresi gibi görünüyor.
matematik

4
@ brubelsabs: Evet, zmv regexp değişimini yapabilir . Eşleşen dosyalar için *user*.html, uzantıyı .htmlve geçtiği her yerde değiştirmek rciçin final: zmv '(*user*).htm' '${1//rc/final}.html' @ghoppe: Bence ZMV cevap ihtiyaçlarını örnek -wveya joker etrafında parantez.
Chris Johnsen,

Bu öneriyi gerçekten seviyorum çünkü Mac'e (demleme gibi) fazladan bir şey yüklemeniz gerekmiyor, ancak mmv benzeri kolay sözdizimini kullanmanıza izin veriyor.
Saman,

+1 Güzel. Regex'ler arasındaki farklardan birkaçı alıştım: 1) hepsini almak *yerine kullanmak .*. *?açgözlü olmayan gibi çalışmak gibi görünüyor .*?. 2) benim için, ^ve $gibiydi başlangıç ve dize sonu için hiçbir şey maç için neden
user56reinstatemonica8

21

Sakar beni:

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

Ve bunu sık sık yaptığım gibi kullanmak istiyorsanız:

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

Bu litte betiğini ~ / bin / rename olarak kullanmanızı öneririm:

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

senaryonuz benim için çalışmıyor result-> "ssed: ACDC okuyamaz: Böyle bir dosya veya dizin" "* ACDC ACDC ACDC adlandırmak" Ben linux gelen util adlandırmak yüklü ve şimdi anwyay çalışır
holms

5

MacPorts'u kurmayı ve renameutilspaketi kurmayı deneyebilirsiniz :

renameutils @ 0.10.0 (sysutils)

renameutils, dosyaları daha hızlı ve daha az hantal hale getirmek için tasarlanmış bir dizi programdır


Bu pakette "rename" komutu bulunmuyor.
juanpablo

1
Öyle demedim. qmvİşi yapıyor gibi görünüyor.
lajuette

qmvbasit bir regex isimleri için biraz fazla
çalışsa da

4

Yeniden adlandırmanın çeşitli versiyonları vardır . Perl tabanlı birini arıyor gibisin.

Bu yardımcı programın bir sürümü File :: Rename Perl modülü ile birlikte geliyor . Gibi bir şey ile yükleyebilirsiniz sudo cpan -i File::Rename.

Veya, Debian'ın perl paketindeki yeniden adlandırmayla gidebilirsiniz . İndirmek için sadece tek bir dosyadır. İstediğiniz yere koyun ve çalıştırılabilir olması için chmod yapın .


Bir alternatif, zsh ile gelen zmv aracıdır . Aynı sözdizimine sahip değil, ancak işletim sisteminizle birlikte geliyor ve birçok ortak vakayla kolayca ilgilenebilir.


perl yeniden adlandırma bu soru bir örnek olarak gösterilmektedir şeydir.
quack quixote

2

Mac'lerde rename, Debian'ın Perl tabanlı olduğu gibi Aristotle Pagaltzis'in serbestçe kullanabileceğini söylüyorum . Buradan alabilirsiniz . Ya da önce okumak için burayı ziyaret edin - her zaman iyi bir fikir.

Bunu bir yere $PATHyerleştirip çalıştırılabilir hale getirmeniz gerekir ( chmod +x rename) ve sonra gitmeniz iyi olur.


2

Bu zor olmamalı ama görünüşe göre öyle. Örneğin, tüm dosya uzantılarını aiff'ten aifc'ye yeniden adlandırmak istiyorum.

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

1

Bir GUI arıyorsanız, Ad Mangler'ı deneyin . Yeniden adlandırmayı uygularsanız ne olacağını gösteren bir "önizleme" özelliği vardır.


1

renamer içindeki eşdeğer komut (platformlar arası)

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

0

Sublime Text'in multiselect'ini beğendiyseniz qmv ile kullanabilirsiniz:

qmv --editor = "/ usr / bin / s3 -w" dosyaları


0

Ben sadece devam ettim ve renameyardımın bu şekilde göründüğü komutu vererek perl-rename olarak adlandırdığım favorimi buldum :

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

İşte böyle sevdiğimi anladığımı biliyorum.

Mac için, Homebrew'de bile sorun yaşadığımı belli belirsiz hatırladığım başkaları var. Yani bu renamepaket değil ve bu da nongnu renameutilspaketi değil.

Buradan aldım ve yüklemeyi söyledikleri gibi yaptı: https://github.com/subogero/rename

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.