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 20:46 ryotane への返信

入力の引き渡し方法を変更して下さい。


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


拡張子は".aif"で固定しています。


ls | grep ".aif" | while read の".aif"部分


名前の変更はいわゆる正規表現と呼ばれるものです。


"s/^(.{7}).+(\.[^\.]+)$/\1\2/"

"s/検索文字列/置換文字列/"

^ 行の先頭を表す記号 (.{7}) 任意の文字7文字(*1) .+ 任意の文字の連続 (\.[^\.]+) "."(ピリオド)から始まり、"."を含まない文字の連続(*2) $ 行の最後を表す記号 \1\2 *1と*2の文字列="()"で括った2つの部分が代入される

つまり、先頭から7文字を残して削除し、拡張子を加えるというものです。


削除したい末尾の文字列の長さを4文字としたいのであれば、次のようにして下さい。


"s/^(.+).{4}(\.[^\.]+)$/\1\2/"


尚、ファイル名に日本語が入っている場合、対策をする必要があります。

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

hohokihai さま


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


ファイル名と希望結果は下記になります。

Piano test-B5-127-LCO1  → Piano test-B5

Piano test-F#4-127-8O1M → Piano test-F#4

Piano test-F#1-90-999X → Piano test-F#1

Piano test-C2-70-C6BP → Piano test-C2


結果の最後は必ずランダムな数字で終わる形になります。

先頭から決まった文字数(ランダム)と拡張子を維持するという形で問題ございません。



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

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

Automator リネームについて

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