# [メタ情報] # 識別子: dropboxリンクに一致するフルパス検索_exe # システム名: dropboxリンクに一致するフルパス検索 # 技術種別: Misc # 機能名: Misc # 使用言語: AppleScript ShellScript # 状態: 実行用 env終了 # [/メタ情報] 要約: Dropboxリンクに一致するフルパス検索.appは、ユーザーが入力したDropbox共有リンクからファイル名を抽出し、指定されたローカルフォルダ(例: `/Volumes/NO3_SSD/mybox/mybox_1/mmedia`, `pmedia`)内で対応するフルパスを検索するAppleScriptである。 本スクリプトは、Dropboxリンクから日本語を除いたファイル名を生成し、ローカルファイル名も同様に日本語部分をハイフンに置換して比較することで一致を判定する。 検索が成功した場合、見つかったファイルパスはクリップボードにコピーされ、通知が表示される。複数のファイルが一致した場合は警告し、Finderでの自動表示は行わず、手動での確認を促す。1件のみ一致した場合は、ユーザーの選択によりFinderでその場所を開くことができる。一致するファイルが見つからなかった場合は、再検索か終了かを選択するダイアログが表示される。この一連のプロセスは、ユーザーが終了を選択するまで繰り返される。 dropboxリンクに一致するフルパス検索.app ``` -- ▼ 対象フォルダ(サブフォルダも含めて検索) set folder1 to "/Volumes/NO3_SSD/mybox/mybox_1/mmedia" set folder2 to "/Volumes/NO3_SSD/mybox/mybox_1/pmedia" repeat -- ▼ Dropboxリンクの入力 display dialog "Dropboxの共有リンクを入力してください(キャンセルで終了):" default answer "" buttons {"キャンセル", "OK"} default button "OK" set dropboxURL to text returned of result -- ▼ Dropboxリンクからファイル名を抽出 set dropboxStyleName to do shell script " echo " & quoted form of dropboxURL & " | /usr/bin/sed -E 's|.*/([^/?]+).*|\\1|' | /usr/bin/tr -d '\\r\\n '" -- ▼ ファイル名確認ダイアログを表示 display dialog "ファイル名から日本語を除いた部分が「" & dropboxStyleName & "」となるフルパスを検索します。" buttons {"OK"} default button "OK" -- ▼ Shellスクリプトで一致ファイルを検索 set shellScript to " find " & quoted form of folder1 & " " & quoted form of folder2 & " -type f | while read f; do base=$(basename \"$f\") converted=$(echo \"$base\" | /usr/bin/sed -E ' s/[一-龯ぁ-んァ-ンー々〆〤]+/-/g; s/-+/-/g; s/-([.][^.]+)$/\\1/; s/^-(.*)$/\\1/') if [ \"$converted\" = " & quoted form of dropboxStyleName & " ]; then echo \"$f\" fi done" try set matchResult to do shell script shellScript on error set matchResult to "" end try if matchResult is not "" then -- 結果をクリップボードに保存し、通知 set the clipboard to matchResult display dialog "一致したファイルパス:\n" & matchResult & return & return & "※パスをクリップボードに保存しました。" buttons {"OK"} default button "OK" -- 複数一致した場合は、Finder表示への自動ジャンプを行わない(警告表示) set lineCount to count of (paragraphs of matchResult) if lineCount > 1 then display alert "【警告】複数のファイルが一致しました。" message "複数の候補が存在するため、Finderでの自動表示はスキップしました。クリップボードの内容(複数行)を直接確認し、手動でFinderで開いてください。" else -- 1件のみ一致の場合は確認のうえFinderにジャンプ display dialog "Finderでこのファイルの場所を開きますか?" buttons {"キャンセル", "開く"} default button "OK" if button returned of result is "開く" then do shell script "open -R " & quoted form of matchResult end if end if else -- 見つからなかった場合 display dialog "一致するファイルは見つかりませんでした。\n検索対象フォルダ:\n・" & folder1 & "\n・" & folder2 buttons {"再検索", "終了"} default button "再検索" if button returned of result is "終了" then exit repeat end if end repeat ```