<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Automator | ふうBLOG</title>
	<atom:link href="https://www.fuublog.net/tag/automator/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fuublog.net</link>
	<description>登山やカメラ、ガジェット周りのブログです。</description>
	<lastBuildDate>Mon, 31 Jul 2023 12:25:34 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Mac Automator 親フォルダ名を追加</title>
		<link>https://www.fuublog.net/2023/04/11/mac-automator2/</link>
					<comments>https://www.fuublog.net/2023/04/11/mac-automator2/#respond</comments>
		
		<dc:creator><![CDATA[ふう]]></dc:creator>
		<pubDate>Tue, 11 Apr 2023 01:31:09 +0000</pubDate>
				<category><![CDATA[小ネタ]]></category>
		<category><![CDATA[Automator]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[自動処理]]></category>
		<guid isPermaLink="false">https://www.fuublog.net/?p=2127</guid>

					<description><![CDATA[以前紹介した拡張子ごとにフォルダを分けたりするスクリプトの続きです。今回は選択したフォルダに親フォルダ名を追加します。Adobe の lightroom Classicを使ったときに写真をフォルダで細かく分けておいて、複 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>以前紹介した<a href="https://www.fuublog.net/2021/07/01/mac-automator/" target="_blank">拡張子ごとにフォルダを分けたりするスクリプト</a>の続きです。<br>今回は選択したフォルダに親フォルダ名を追加します。<br>Adobe の lightroom Classicを使ったときに写真をフォルダで細かく分けておいて、複数のフォルダをまとめてjpgにする事があったのですが、その時に各フォルダ毎にjpg化してくれるのはいいのですが、各フォルダ毎にサブフォルダ（今回はjpgフォルダ）が作られてその中にjpgファイルが入ります。</p>



<pre class="wp-block-code"><code>/001_aaa/jpg/...
/002_bbb/jpg/...
/003_ccc/jpg/...
/004_ddd/jpg/...</code></pre>



<p>何が問題かというと全てjpgフォルダに入っているのでフォルダを取り出す前にフォルダ名を変更しないといけません。<br>一つずつ変更するのは面倒なので有料のリネーマーも購入したのですが、Automatorのスクリプトにしてみました。<br>買ったのは【Name Mangler】というアプリですがやっぱり今はなき【Shupapan】の方が便利なんですよねぇ、、、辛い。</p>



<p>※今回紹介するスクリプトを利用して不利益が生じたとしても自己責任でお願いします。<br>こちらでは一切のフォローは行えません。必ず失っても良いファイルで十分に検証してください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">手順</a></li><li><a href="#toc2" tabindex="0">シェルスクリプトの解説</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">手順</span></h2>



<ol class="wp-block-list">
<li>アプリケーションフォルダーより【Automator】<img decoding="async" width="40" height="40" class="wp-image-720" style="width: 40px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_01.png" alt="Automator" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_01.png 256w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_01-150x150.png 150w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_01-200x200.png 200w" sizes="(max-width: 40px) 100vw, 40px" />を起動し、<span class="bold-red">1.</span>【新規書類】をクリックし、歯車の<span class="bold-red">2.</span>【クイックアクション】を選択して、<span class="bold-red">3.</span>【選択】をクリックします。<br><img fetchpriority="high" decoding="async" width="700" height="430" class="wp-image-719" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_02.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_02.png 912w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_02-300x184.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_02-768x472.png 768w" sizes="(max-width: 700px) 100vw, 700px" /><br><img decoding="async" width="700" height="494" class="wp-image-718" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03.png 1263w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03-300x212.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03-1024x722.png 1024w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03-768x542.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>



<li>ウィンドウ右上、ワークフローが受け取る現在の項目欄で<span class="bold-red">4.</span>【フォルダ】を選び、検索対象を<span class="bold-red">5.</span>【Finder】にします。<br>（これでFinderでフォルダを右クリック時にサービス欄にこのスクリプトが表示されます、【ファイルフォルダを選ぶと両方に適応できるはずです】）<br><img loading="lazy" decoding="async" width="700" height="494" class="wp-image-721" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04.png 1263w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04-300x212.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04-1024x722.png 1024w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04-768x542.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>



<li>ウィンドウ左側、<span class="bold-red">6.</span>【ユーティリティ】から<span class="bold-red">7.</span>【シェルスクリプトを実行】をドラッグで右側グレー部分にドロップします。<br><img loading="lazy" decoding="async" width="700" height="454" class="wp-image-2130" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.56.49.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.56.49.png 1382w, https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.56.49-300x195.png 300w, https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.56.49-1024x664.png 1024w, https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.56.49-768x498.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>



<li>ドロップした【シェルスクリプトを実行】内の右上入力の引き渡し方法で<span class="bold-red">8.</span>【引数として】を選択します。<br>その下、<span class="bold-red">9.</span>【入力欄】の中身に次のスクリプトをコピペして入れ替えて、わかりやすい名前（例:親フォルダ名を追加）で保存すれば終了です。<br><img loading="lazy" decoding="async" width="700" height="454" class="wp-image-2132" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.43.24.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.43.24.png 1382w, https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.43.24-300x195.png 300w, https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.43.24-1024x664.png 1024w, https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.43.24-768x498.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>
</ol>



<pre class="wp-block-code"><code>for f in "$@"
do

#fは選択したファイルパス
fname=${f##*/} #fから最後の/以前を削除してフォルダ名のみを取得

dir=${f%/*} #fからファイル名以外の部分を取得
parent=${dir##*/} #dirから最後の/より手前を削除

mv $f ${dir}/${parent}_${fname} #フォルダ名を変更

done</code></pre>



<h2 class="wp-block-heading"><span id="toc2">シェルスクリプトの解説</span></h2>



<p>今回も間違ってたらごめんなさい大体あってるはず。<br>デスクトップにある【撮影】フォルダに入った【jpg】フォルダに対して【親フォルダ名を追加】を選択した時の挙動を例に挙げます。</p>



<ul class="wp-block-list">
<li><span class="marker-under">for f in &#8220;$@&#8221;</span><br>引数として受け取ったファイル&#8221;$@&#8221;をfに代入し一つずつに処理する<br>この時点の【f】の中身はファイルのフルパスが入っています。<br>例：/Users/ユーザー名/Desktop/撮影/001_aaa/jpg</li>



<li><span class="marker-under">do</span><br>1行目forの範囲ここから</li>



<li><span class="marker-under">fname=${f##*/} </span>#fから最後の/以前を削除してフォルダ名のみを取得<br>fnameに引数として受け取った【f】から前方一致でのマッチ部分削除(最長マッチ)で、最後の【/】以前を削除して代入<br>例：jpg</li>



<li><span class="marker-under">dir=${f%/*} </span>#fからファイル名以外の部分を取得<br>dirに引数として受け取った【f】から後方一致でのマッチ部分削除(最短マッチ)で、最後の【/】とフォルダ名を削除したパスを代入<br>例：/Users/ユーザー名/Desktop/撮影/001_aaa</li>



<li><span class="marker-under">parent=${dir##*/} </span>#dirから最後の/より手前を削除<br>dirに入れた変数から前方一致でのマッチ部分削除(最長マッチ)で、最後の【/】以前を削除して代入<br>例：001_aaa</li>



<li><span class="marker-under">mv $f ${dir}/${parent}_${fname} </span>#フォルダ名を変更<br>mvコマンドでフォルダ名の変更 </li>



<li><span class="marker-under">done</span><br>1行目forの範囲ここまで</li>
</ul>



<p>スクリプトを実行すると、下記のように動いてくれるはずですが、間違っていると困るので十分に不要なフォルダでテストしてください。</p>



<figure class="wp-block-video"><video height="724" style="aspect-ratio: 1094 / 724;" width="1094" controls src="https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.41.07.mov"></video></figure>



<p>パスの取得は下記のマッチを使用、上記スクリプトでは変数名は$f、パターンはディレクトリの【/】や拡張子手前の【.】と【*】で文字列を使用<br>${変数名#パターン} 前方一致でのマッチ部分削除(最短マッチ)<br>${変数名##パターン} 前方一致でのマッチ部分削除(最長マッチ)<br>${変数名%パターン} 後方一致でのマッチ部分削除(最短マッチ)<br>${変数名%%パターン} 後方一致でのマッチ部分削除(最長マッチ)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.fuublog.net/2023/04/11/mac-automator2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.fuublog.net/wp-content/uploads/2023/04/2023-04-10-16.41.07.mov" length="3650576" type="video/quicktime" />

			</item>
		<item>
		<title>Mac用 Automator フォルダ分けスクリプト</title>
		<link>https://www.fuublog.net/2021/07/01/mac-automator/</link>
		
		<dc:creator><![CDATA[ふう]]></dc:creator>
		<pubDate>Thu, 01 Jul 2021 13:03:21 +0000</pubDate>
				<category><![CDATA[小ネタ]]></category>
		<category><![CDATA[Automator]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[自動処理]]></category>
		<guid isPermaLink="false">https://www.fuublog.net/?p=712</guid>

					<description><![CDATA[先日職場のMacを入れ替えまして、M1 Mac miniになったのですが、CPUが変わったのでTimemachineからの復帰ではなくデータフォルダーをコピーしてアプリケーションはすべて新規インストールしたのですが、細か [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日職場のMacを入れ替えまして、M1 Mac miniになったのですが、CPUが変わったのでTimemachineからの復帰ではなくデータフォルダーをコピーしてアプリケーションはすべて新規インストールしたのですが、細かなスクリプトをコピーし忘れたあげく、バックアップに置いていたデータも使えなくなってしまって（使っていたiMacのFusionドライブだったのですが、HDDを換装してデータディスクを取り出して保管していたつもりなのですが、片割れのSSDを初期化して読み込めなくなってしまいました）、なんとかスクリプトの復帰はできたのですが、今後のための覚書です。</p>



<p>※今回紹介するスクリプトを利用して不利益が生じたとしても自己責任でお願いします。<br>こちらでは一切のフォローは行えません。必ず失っても良いファイルで十分に検証してください。</p>



<p>※<a href="https://www.fuublog.net/2023/04/11/mac-automator2/" data-type="URL" data-id="www.fuublog.net/2023/04/11/mac-automator2/" target="_blank">別パターンのスクリプト（選択したフォルダに親フォルダの名前を追記）はこちら</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">拡張子でフォルダ分け</a><ol><li><a href="#toc2" tabindex="0">シェルスクリプトの解説</a></li></ol></li><li><a href="#toc3" tabindex="0">機種名でフォルダ分け</a><ol><li><a href="#toc4" tabindex="0">シェルスクリプトの解説</a></li></ol></li><li><a href="#toc5" tabindex="0">スクリプトが必要になったわけ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">拡張子でフォルダ分け</span></h2>



<p>1つのフォルダに入った複数のファイルをjpgやtifなど拡張子毎のフォルダに分けるスクリプトです。<br>Automatorで作成しサービスに登録することで、納品データの入ったフォルダを右クリックしサービスより選ぶ事で拡張子毎にフォルダを作成し、自動で整理してくれます。</p>



<ol class="wp-block-list">
<li>アプリケーションフォルダーより【Automator】<img loading="lazy" decoding="async" width="40" height="40" class="wp-image-720" style="width: 40px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_01.png" alt="Automator" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_01.png 256w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_01-150x150.png 150w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_01-200x200.png 200w" sizes="(max-width: 40px) 100vw, 40px" />を起動し、<span class="bold-red">1.</span>【新規書類】をクリックし、歯車の<span class="bold-red">2.</span>【クイックアクション】を選択して、<span class="bold-red">3.</span>【選択】をクリックします。<br><img loading="lazy" decoding="async" width="700" height="430" class="wp-image-719" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_02.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_02.png 912w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_02-300x184.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_02-768x472.png 768w" sizes="(max-width: 700px) 100vw, 700px" /><br><img loading="lazy" decoding="async" width="700" height="494" class="wp-image-718" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03.png 1263w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03-300x212.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03-1024x722.png 1024w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_03-768x542.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>



<li>ウィンドウ右上、ワークフローが受け取る現在の項目欄で<span class="bold-red">4.</span>【フォルダ】を選び、検索対象を<span class="bold-red">5.</span>【Finder】にします。<br>（これでFinderでフォルダを右クリック時にサービス欄にこのスクリプトが表示されます）<br><img loading="lazy" decoding="async" width="700" height="494" class="wp-image-721" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04.png 1263w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04-300x212.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04-1024x722.png 1024w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_04-768x542.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>



<li>ウィンドウ左側、<span class="bold-red">6.</span>【ファイルとフォルダ】から<span class="bold-red">7.</span>【フォルダの内容を取得】をドラッグで右側グレー部分にドロップします。<br><img loading="lazy" decoding="async" width="700" height="494" class="wp-image-722" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_05.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_05.png 1263w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_05-300x212.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_05-1024x722.png 1024w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_05-768x542.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>



<li>ウィンドウ左側、<span class="bold-red">8.</span>【ユーティリティ】から<span class="bold-red">9.</span>【シェルスクリプトを実行】をドラッグで右側グレー部分（フォルダの内容を取得の下）にドロップします。<br><img loading="lazy" decoding="async" width="700" height="494" class="wp-image-723" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_06.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_06.png 1263w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_06-300x212.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_06-1024x722.png 1024w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_06-768x542.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>



<li>ドロップした【シェルスクリプトを実行】内の右上入力の引き渡し方法で<span class="bold-red">10.</span>【引数として】を選択します。<br>その下、<span class="bold-red">11.</span>【入力欄】の中身に次のスクリプトをコピペして入れ替えて、わかりやすい名前（例:拡張子でフォルダ分け）で保存すれば終了です。<br><img loading="lazy" decoding="async" width="700" height="494" class="wp-image-725" style="width: 700px;" src="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_07-1.png" alt="" srcset="https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_07-1.png 1263w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_07-1-300x212.png 300w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_07-1-1024x722.png 1024w, https://www.fuublog.net/wp-content/uploads/2021/07/210701_automator_07-1-768x542.png 768w" sizes="(max-width: 700px) 100vw, 700px" /></li>
</ol>



<pre class="wp-block-code"><code>for f in "$@"
do

fpath=${f%/*} #ファイルのパスを取得
ext=${f##*.} #ファイルの拡張子を取得
if &#91; ! -e $fpath/$ext -o ! -d $fpath/$ext ]; then
	mkdir $fpath/$ext #拡張子でフォルダを作成
fi
	mv $f $fpath/$ext #フォルダへ移動

done</code></pre>



<h3 class="wp-block-heading"><span id="toc2">シェルスクリプトの解説</span></h3>



<p>間違ってたらごめんなさい大体あってるはず。<br>デスクトップにあるjpgの入った【フォルダA】を選択して右クリックでサービスの中にできた【拡張子でフォルダ分け】を選択した時の挙動を例に挙げます。</p>



<ul class="wp-block-list">
<li><span class="marker-under">for f in &#8220;$@&#8221;</span><br>引数として受け取ったファイル&#8221;$@&#8221;をfに代入し一つずつに処理する<br>この時点の【f】の中身はファイルのフルパスが入っています。<br>例：/Users/ユーザー名/Desktop/フォルダA/file.jpg</li>



<li><span class="marker-under">do</span><br>1行目forの範囲ここから</li>



<li><span class="marker-under">fpath=${f%/*}</span> #ファイルのパスを取得<br>fpathに引数として受け取った【f】から後方一致でのマッチ部分削除(最短マッチ)で、最後の【/】とファイル名を削除したパスを取得<br>例：/Users/ユーザー名/Desktop/フォルダA</li>



<li><span class="marker-under">ext=${f##*.}</span> #ファイルの拡張子を取得<br>extに引数として受け取った【f】から前方一致でのマッチ部分削除(最長マッチ)で、最後の【.】とそれ以前を削除したパスを代入<br>例：jpg</li>



<li><span class="marker-under">if [ ! -e $fpath/$ext -o ! -d $fpath/$ext ]; then</span><br>if文 指定のフォルダに拡張子の名前の付いたフォルダがあるか確認し、無ければ次の行へ</li>



<li><span class="marker-under">mkdir $fpath/$ext</span> #拡張子でフォルダを作成<br>指定のフォルダへ取得した拡張子名のフォルダを作成</li>



<li><span class="marker-under">fi</span><br>if文ここまで</li>



<li><span class="marker-under">mv $f $fpath/$ext</span> #フォルダへ移動<br>作成（もしくは存在）した拡張子名のフォルダへファイルを移動</li>



<li><span class="marker-under">done</span><br>1行目forの範囲ここまで</li>
</ul>



<p>スクリプトを実行すると、下記のファイルが拡張子名のフォルダに入るので、一つのフォルダにjpgやtifが複数入っていても自動で整理してくれます。<br>【/Users/ユーザー名/Desktop/フォルダA/file.jpg】<br>　　　　　　↓<br>【/Users/ユーザー名/Desktop/フォルダA/jpg/file.jpg】<br>このようになります。</p>



<p>パスの取得は下記のマッチを使用、上記スクリプトでは変数名は$f、パターンはディレクトリの【/】や拡張子手前の【.】と【*】で文字列を使用<br>${変数名#パターン} 前方一致でのマッチ部分削除(最短マッチ)<br>${変数名##パターン} 前方一致でのマッチ部分削除(最長マッチ)<br>${変数名%パターン} 後方一致でのマッチ部分削除(最短マッチ)<br>${変数名%%パターン} 後方一致でのマッチ部分削除(最長マッチ)</p>



<h2 class="wp-block-heading"><span id="toc3">機種名でフォルダ分け</span></h2>



<p>こちらも使用方法は同じですが、ファイル名の命名ルールを利用しファイル名の 【_】 より手前を製品名としてフォルダで分けています。<br>例：【EOS-R5_正面.tif】の場合EOS-R5フォルダを作成し【EOS-R5/EOS-R5_正面.tif】このようにフォルダに入れてくれます。<br>フォルダ名にしたい名前が先頭では無い、もしくは【_】で分けられていない場合はスクリプトを修正してみてください。<br>違うのはスクリプトだけなので画像は省きます。</p>



<ol class="wp-block-list" id="block-3f12dccd-e65a-4da3-b9a2-a40439cd2aaa">
<li>アプリケーションフォルダーより【Automator】を起動し、歯車の【クイックアクション】を選択します。</li>



<li>ウィンドウ右上、ワークフローが受け取る現在の項目欄で【フォルダ】を選び、検索対象を【Finder】にします。<br>（これでFinderでフォルダを右クリック時にサービス欄にこのスクリプトが表示されます）</li>



<li>ウィンドウ左側、ファイルとフォルダから【フォルダの内容を取得】をドラッグで右側グレー部分にドロップします。</li>



<li>ウィンドウ左側、ユーティリティから【シェルスクリプトを実行】をドラッグで右側グレー部分（フォルダの内容を取得の下）にドロップします。</li>



<li>ドロップした【シェルスクリプトを実行】内の右上入力の引き渡し方法で【引数として】を選択します。<br>その下、入力欄の中身に次のスクリプトをコピペして入れ替えて、わかりやすい名前（例:機種名でフォルダ分け）で保存すれば終了です。</li>
</ol>



<pre class="wp-block-code"><code>for f in "$@"
do

fpath=${f%/*} #ファイルのパスを取得
fname=${f##*/} #ファイル名を取得
model=${fname%%_*} #ファイル名から"_"より手前の文字列を取得

if &#91; ! -e $fpath/$model -o ! -d $fpath/$model ]; then
	mkdir $fpath/$model #機種名でフォルダを作成
fi
	mv $f $fpath/$model #フォルダへ移動

done</code></pre>



<h3 class="wp-block-heading"><span id="toc4">シェルスクリプトの解説</span></h3>



<p>こちらも間違ってたらごめんなさい大体あってるはず。<br>デスクトップにあるjpgの入った【フォルダB】を選択して右クリックでサービスの中にできた【機種名でフォルダ分け】を選択した時の挙動を例に挙げます。</p>



<ul class="wp-block-list">
<li><span class="marker-under">for f in &#8220;$@&#8221;</span><br>引数として受け取ったファイル&#8221;$@&#8221;をfに代入し一つずつに処理する<br>この時点の【f】の中身はファイルのフルパスが入っています。<br>例：/Users/ユーザー名/Desktop/フォルダB/EOS-R5_正面.tif</li>



<li><span class="marker-under">do</span><br>1行目forの範囲ここから</li>



<li><span class="marker-under">fpath=${f%/*}</span> #ファイルのパスを取得<br>fpathに引数として受け取った【f】から後方一致でのマッチ部分削除(最短マッチ)で、最後の【/】とファイル名を削除したパスを代入<br>例：/Users/ユーザー名/Desktop/フォルダB</li>



<li><span class="marker-under">fname=${f##*/}</span> #ファイル名を取得<br>fnameに引数として受け取った【f】から前方一致でのマッチ部分削除(最長マッチ)で、最後の【/】以降のファイル名を代入<br>例：EOS-R5_正面.tif</li>



<li><span class="marker-under">model=${fname%%_*}</span> #ファイル名から&#8221;_&#8221;より手前の文字列を取得<br>modelに先ほど取得したファイル名の後方一致でのマッチ部分削除(最長マッチ)で、_より後ろを削除したファイル名を代入<br>例：EOS-R5</li>



<li><span class="marker-under">if [ ! -e $fpath/$model -o ! -d $fpath/$model ]; then</span><br>if文 指定のフォルダにmodelに代入した名前の付いたフォルダがあるか確認し、無ければ次の行へ</li>



<li><span class="marker-under">mkdir $fpath/$model</span> #機種名でフォルダを作成<br>指定のフォルダへ取得した機種名のフォルダを作成</li>



<li><span class="marker-under">fi</span><br>if文ここまで</li>



<li><span class="marker-under">mv $f $fpath/$model</span> #フォルダへ移動<br>作成（もしくは存在）した機種名のフォルダへファイルを移動</li>



<li><span class="marker-under">done</span><br>1行目forの範囲ここまで</li>
</ul>



<p>スクリプトを実行すると、下記のファイルが拡張子名のフォルダに入るので、<br>【/Users/ユーザー名/Desktop/フォルダB/EOS-R5_正面.tif】<br>　　　　　　↓<br>【/Users/ユーザー名/Desktop/フォルダB/EOS-R5/EOS-R5_正面.tif】<br>このようになります。<br>中にファイルが100入っていようが、選択するだけで自動的に整理してくれます。</p>



<h2 class="wp-block-heading"><span id="toc5">スクリプトが必要になったわけ</span></h2>



<p>クライアントへのデータ納品時に「ファイルを製品ごとに分けて納品してね」と言われてしまい、ファイル名で順番に並んでるからわかるでしょと思いつつも、製品ごとにフォルダを作り、手作業で入れていたのですが、データに修正が入るたびにフォルダ分けをやり直したりしていると、いつか間違ってしまうので自動で振り分けられるようなスクリプトを探したんですが、良いものが見つからず自分で作ってみることになりました。</p>



<p>MacはAutomatorがあるのでこういった処理の自動化が出来て良いですね。<br>思ってもスクリプトがわからなくてなかなか作ることが出来ないんで大変ですが、思い通りに動くと楽しいですよね。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
