Automator リネームについて

Automater での「Finder項目の名前を変更」ではできないリネーム方法についての質問です。


aaabbbcdefg.aif

bbbcccdefgh.aif

aaabbbc.aif (defgを削除)

cccbbbd.aif (efghを削除)


上記のように、拡張子を除いた基本名のランダムな後半部分数文字だけを削除したいのですが、

アクションにある「シェルスクリプトを実行」(私は初心者なので何もわかりません)等で、

Automaterでのリネーム自動化は可能でしょうか?


ネット等でいろいろ調べたのですが、

基本名を指定してから、基本名内のどの文字を残すか・削除するか等のシェル?の情報を見つけましたが、

今回の場合は、基本名がランダムでしかも後半部分数文字を削除するといった情報は私では見つけられませんでした。


また、高機能なリネームソフトが存在することは知っておりますが、

できればAutomaterで解決できるのであればと思いまして質問いたしました。


仮に不可能でありましたら、不可能と教えていただけますと幸いです。

よろしくお願いいたします。



macOS Sierra 10.12.6


メッセージ編集者: ryotane 最終的な形として、Automaterのサービス機能として、指定ファイルのみにリネーム適用したいと考えております。

MacBook Pro with Retina display, macOS Sierra (10.12.6), null

投稿日 2017/11/06 17:32

返信
返信: 19

2017/11/06 19:18 ryotane への返信

リネーム後のファイル名の文字数は固定ですか?また、拡張子は".aif"固定ですか?

以上の条件を満たす場合、次のスクリプトで良いと思います。

cd "${1}" ls | grep ".aif" | while read do OLD_NAME=$( echo "${REPLY}" ) NEW_NAME=$( echo "${REPLY}" | sed -E "s/^(.{7}).+(\.[^\.]+)$/\1\2/" ) if [ "${OLD_NAME}" != "${NEW_NAME}" ]; then mv "${OLD_NAME}" "${NEW_NAME}" fi done

注)リネーム後の文字数が7文字の場合


ユーザがアップロードしたファイル

2017/11/07 05:36 ryotane への返信

度々、失礼致します。


一つだけ、補足させてください。 Automator.appの書類のタイプのうち、ワークフローとサービスとで少し取り扱いが異なります。 添付されたスクリーンショットはサービスのものです。 一方で、hohokihai様が添付されたスクリーンショットはワークフローのもだと想像しています。 なので、少し注意が必要です。 可能ならば、ワークフロー形式の書類で作り直しておくと良さそうです。


一方でサービス形式の書類の場合は、Finder.appでフォルダーを一つ選択した状態から、コンテクスチュアルメニューのサービスを実行できるので便利です。 その場合は、『”サービス”は、次の選択項目を受け取る:』の項目を『フォルダー』に指定した上で、『Finder項目の選択を求める』アクションは削除して、『シェルスクリプトを実行』アクションのみにしておきます。 そうすることで、フォルダを選択し直す必要がなくなるので、よりスムーズに処理を実行できると思います。

2017/11/06 19:58 hohokihai への返信

hohokihai さま


ご返信ありがとうございます。


早速、ご案内いただきました通りに実行してみました。

私のやり方が間違っていたのか、結果が反映されませんでした。

その手順を記しますので、間違い箇所がありましたら再度ご指摘くださいますと幸いです。


・変更したいファイルは今の所、aifのみです。

・ファイルの基本名は

 aaabbbcdefg.aif

 aa bcd_efgh.aif (文字数は不定でスペースやハイフンが入ることもあります)

・リネームしたいファイルパスは、

 Desktop → 適当な名前のフォルダ → リネームしたいファイル(テスト用に数個)

・以下スクショのように実行します。

ユーザがアップロードしたファイル


・Finder が フォルダの場所を聞いてきます → リネームしたいファイルが入ったフォルダを選択

・リネーム実行


という、流れで行いましたが、ファイルにリネームの変化が見られませんでした。


どの部分で、違っていたでしょうか。

お手数ですが、よろしくお願いいたします。

2017/11/06 21:05 hohokihai への返信

hohokihai さま


最初にご指示くださいました方法を何度か試していまして、

Ask for Finder Items(Finder項目の選択を求める)の、

Start at をリネームしたいファイルが入るフォルダに指定したら変化が起きました。


テスト用のファイルは9個用意してまして、

結果は、8個のファイルが消えて、残った一つのファイル名が先頭から数えて7文字維持(スペース含む)となりました。


今回、2度目にいただいた内容(大変詳細な内容をありがとうございます)

・入力の引渡し方法の変更。

・Ask for Finder Items のタイプ変更。

でも変化が見られませんでした。

リネームしたいファイル名に日本語は入りません。


何度もお手間をいただいて恐縮ですが、

よろしくお願いいたします。

2017/11/06 21:41 ryotane への返信

始めのサンプルでは、ファイルの先頭から7文字がユニークでない場合、上書きされてしまいます。


例)

abcdefg1.aif

abcdefg2.aif

abcdefg3.aif

->

abcdefg.aif (abcdefg3.aifがリネームされたもの。abcdefg1.aifとabcdefg2.aifは上書きされる)


ファイル名がどのようになっているのか分からないと対策のしようがありません...

というか、先頭から7文字残す方向でいいのですか?

2017/11/06 22:38 ryotane への返信

ファイル名が"-XXX-XXX.aif"という形で終わるのであれば、次の記述でいけそうです。一応、上書きしないような条件分岐はあった方がいいですよね?

cd "${1}" ls | grep ".aif$" | while read do OLD_NAME=$( echo "${REPLY}" ) NEW_NAME=$( echo "${REPLY}" | sed -E "s/^(.+)-[^-]+-[^-]+(\.[^\.]+)$/\1\2/" ) if [ "${OLD_NAME}" != "${NEW_NAME}" ]; then if [ ! -e "${NEW_NAME}" ]; then mv "${OLD_NAME}" "${NEW_NAME}" fi fi done

2017/11/07 05:09 hohokihai への返信

hohokihai さま


本日はたいへん長い文面のやり取りをありがとうございました。

現状の仕様に十分に満足しておりますが、

もう一点だけお伺いしたい事がありましたので記載します。


今回の、フォルダー指定 → その中身全てのaifを一括リネーム処理する以外に、

目的のaifファイルを直接クリックしてサービスからリネーム処理(単数から複数選択まで)するということは可能でしょうか?


お時間のある時で構いませんので、またのご回答をいただけますと幸いです。

よろしくお願いいたします。

2017/11/06 19:25 T22T への返信

訂正(すみません):『拡張子を除いた基本名のランダムな後半部分数文字だけ』でしたね。

defgやefghだけを削除するものと勘違いしていました。 削除対象の文字列の文字の組み合わせはランダムに変化して、文字列の長さも変化するということですね。

2017/11/06 19:29 T22T への返信

T22T さま


ご返信ありがとうございます。

また、訂正まで下さりありがとうございます。


ご指摘の通りでして、

私が例としてあげました「削除したい末尾4文字」は完全なランダム不規則文字でして、

「テキストを置き換える → 検索文字」の項目には文字指定ができないものと意味しておりました。

わかりにくい内容で大変失礼しました。

2017/11/06 20:16 T22T への返信

T22T さま


削除したい末尾の文字数や、

リネーム前・後の文字数などもランダム(スペースやハイフンも入ったり)となっております。

拡張子のみ固定となっております。


改めまして情報不足で申し訳ございません。

よろしくお願いいたします。

2017/11/07 05:35 T22T への返信

T22T さま


補足ありがとうございます。


なにぶん初心者なもので、App と サービスしか使った事がなく、

ワークフローの概念が頭にありませんでした。

ご指示いただいたサービス内容に変更しましたら、とてもスムースに処理ができました。


本当にありがとうございました。

今後ともよろしくお願いいたします。

2017/11/08 07:32 ryotane への返信

実は、Automatorほとんど使わないのでサービス形式が使えること知りませんでした。ファイルを選択してコンテキストメニューから実行できるのは良いですね。


フォルダーを含めてしまうと、すべてのフォルダーのコンテキストメニューに表示されてしまいウザいと思うので、音楽ファイルを選択したときだけメニューアイテムが表示される方が良いと思います。


というわけで、こんな感じでしょうか。


ユーザがアップロードしたファイル

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Automator リネームについて

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。