Mac OS Xの多くのファイルの名前変更、バッチ処理


57

Linuxでrenameコマンドを使用してファイルの名前を変更していました。

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

Mac OS X(Snow Leopard)に類似したものはありますか?


次の記事ではrename、Mac OS X にインストールする方法について説明します。macosxhints.com
ポールR

コメントにはバックティックが表示されません。おそらくこれを回答として追加するか、質問を編集してソリューションを含める必要があります。
ポールR

1
私がこれまでに見つけた中で最も迅速な解決策は、組み込みのAutomatorを使用することです。ステップのヘルプで簡単なステップについては、この記事をチェックアウト:tuaw.com/2008/11/11/...
nilay

それはコメントしなかった場合、私は... nilayの答えを投票する
voidstate

回答:


49

自作、OS X用のパッケージマネージャ:

brew install rename 

その後rename、Linux と同じコマンドを実行できます。


3
MacPortsパッケージも使用できます
。port

2
@MiquelAdrover:ただし、使用する必要があるポートrename-5.22(22はインストール済みバージョン)の代わりにrename
-mems

シンボリックリンクの名前を変更できますsudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
赤穂

26

ZSHのパワーを賢くzsh使用します(デフォルトで使用しない貧しい魂の1人である場合は、ターミナルに入力します)。

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

ZMVはMMV構文に従います


しかし、それは正規表現の置換も許可しますか?これは、ある種の強化されたシェルグロビングのようです。
数学

4
@brubelsabs:はい、zmvは正規表現の置換を行うことができます。ファイルのマッチそのため*user*.htmlに拡張子を変更.htmlし、出現するすべての変更rcfinalzmv '(*user*).htm' '${1//rc/final}.html' @ghoppeを:私は考えてzmvのあなたの答えのニーズに例を-wまたはそのワイルドカードの周りの括弧。
クリスジョンセン

Macに追加のもの(brewなど)をインストールする必要はないので、この提案が本当に好きですが、構文のような簡単なmmvを使用できます。
ヘイ

+1ニース。私が慣れている正規表現との違い:1)すべてを取得する*代わりに使用.*します。*?貪欲でないように動作するよう.*?です。2)私のために、^そして$文字列の開始と終了のため、それは何も一致しないために起こすように見えた
user56reinstatemonica8

21

不器用な私:

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

そして、私がこのように頻繁に行うように使用したい場合:

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

〜/ bin / renameでこのlitteスクリプトを使用することをお勧めします。

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

スクリプトは私のために動作しません「名前を変更ACDC ACDC ACDC *」result->「ssed:ACDCを読み込むことはできません:そのようなファイルやディレクトリを」、私は、Linuxからutilの名前変更をインストールし、今ではanwyay作品
ホルムズに

5

MacPortsをインストールしてrenameutilsパッケージをインストールしてみてください:

renameutils @ 0.10.0(sysutils)

renameutilsは、ファイル名の変更をより高速で煩雑にしないように設計されたプログラムのセットです。


このパッケージには「名前変更」コマンドがありません。
ジャンパブロ

1
そうだとは言わなかった。qmvそれは仕事をしているように見えます。
ラジュエット

qmv単純な正規表現の名前変更には
少し手間がかかり

4

renameにはさまざまなバージョンがあります。Perlベースのものを探しているようです。

このユーティリティの1つのバージョンには、File :: Rename Perlモジュールが付属しています。のようなものでインストールできsudo cpan -i File::Renameます。

または、Debianのperlパッケージから名前を変更することもできます。これは、ダウンロードする単一のファイルです。好きな場所に置いて、実行可能になるようにchmodしてください。


別の方法は、zshに付属zmvツールです。同じ構文ではありませんが、OSに付属しており、多くの一般的なケースを簡単に処理できます。


perlの名前変更は、一例として、どのようにこの質問を示しています。
いんちきのキホーテ

2

Macではrename、DebianのようにPerlベースであるAristotle Pagaltzisの無料のを使用します。こちらで入手できます。または、ここを訪れて最初に読んでください-常に良いアイデアです。

あなたは$PATHそれをあなたのどこかに置き、それを実行可能にする必要があります(chmod +x rename)、それからあなたは行ってもいいです。


2

これは難しくないはずですが、明らかにそうです。たとえば、すべてのファイルの拡張子をaiffからaifcに変更します。

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


1

renamer(クロスプラットフォーム)の同等のコマンドは

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


0

私は先に進んで、perl-renameと呼ばれる私のお気に入りを見つけましたrename。ヘルプは次のようなコマンドを提供します。

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

それは私が好きなものを手に入れたことを知っている方法です。

Macの場合、Homebrewでさえ、問題を抱えていることを漠然と覚えているだけです。したがって、これはrenameパッケージではなく、nongnu renameutilsパッケージでもありません。

ここから入手して、彼らが言及したようにインストールを行いました:https : //github.com/subogero/rename

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.