Поиск в Finder из выбора - PullRequest
       15

Поиск в Finder из выбора

0 голосов
/ 28 августа 2018

Обычно я получаю электронную таблицу в формате Excel с десятками имен файлов, по которым мне затем нужно искать и искать по отдельности.

Spreadhseet

Есть ли способ, которым я мог бы просто:

  1. Выбрать все имена файлов, например, строка A Excel,
  2. затем найдите все эти файлы на "This Mac"
  3. , затем скопируйте все найденные файлы в новую папку на рабочем столе

Пока я пробовал первую часть поиска, и вот что я получаю: а)

Автоматизатор с переменной. Но проблема в том, что он ищет только 1 файл из списка

б)

Автоматизатор со сценарием оболочки (Скопировать в буфер обмена> Открыть Finder> CMD + F (выделить диалог поиска)> CMD + V). Открывает новое окно Finder, но не вставляет буфер обмена в диалог поиска

в) /usr/bin/pbcopy

on run {input, parameters}
    tell application "System Events"
        keystroke "f" using {command down}
        keystroke "v" using {command down}
    end tell    
    return input
end run`

Конечный результат такой же, как вариант b). Я планировал запустить его в Automator как « Service », который позже я мог бы назначить сочетанию клавиш.

Я почти уверен, что для этого должен быть простой вариант оболочки - любой совет будет высоко оценен.

1 Ответ

0 голосов
/ 29 августа 2018

Я сделал bash скрипт, который делает то, что вы хотите. Вы должны выбрать группу имен файлов в Excel или любом другом приложении и скопировать их в буфер обмена с помощью C . После этого вам нужно запустить скрипт, и он возьмет элементы из буфера обмена и найдет изображения TIFF или JPEG, соответствующие этому имени, и скопирует их в каталог на рабочем столе с именем Selected Files:

#!/bin/bash

# Get contents of clipboard into bash array
files=( $(pbpaste) )

# Create output directory - no checks for already existing or already containing files
OUTDIR="$HOME/Desktop/Selected Files"
mkdir -p "$OUTDIR"

# Iterate through fetching files
for ((i=0;i<${#files[@]};i++)) ; do
   name=${files[i]}
   result=$( mdfind "kMDItemDisplayName == \"${name}.*\" && (kMDItemKind==\"TIFF image\" || kMDItemKind==\"JPEG image\")" )
   if [ -f "$result" ]; then
      echo $name: $result
      cp "$result" "$OUTDIR"
   else
      echo ERROR: Searched for: $name, found $result
   fi
done

Я не уверен в вашем уровне знакомства с bash, поэтому вы можете игнорировать следующее ...

Создайте новый каталог для ваших собственных скриптов:

mkdir -p $HOME/scripts

Сохраните приведенный выше скрипт в этом каталоге с именем файла:

$HOME/scripts/gather

Сделайте скрипт исполняемым, набрав его в Terminal :

chmod +x $HOME/scripts/gather

Отредактируйте свой профиль входа в систему ($HOME/.profile) и добавьте каталог $HOME/scripts в свой PATH:

export PATH="$PATH":$HOME/scripts

Затем запустите новый Terminal , и вы можете использовать любой скрипт, который вы сохранили в $HOME/scripts, без необходимости указывать полный путь к нему, например ::

.
gather

Следующая информация любезно предоставлена ​​@ user3439894 в разделе комментариев, так как мне не хватает этого аспекта ...

Чтобы использовать сочетание клавиш, вам нужно создать Automator «Рабочий процесс службы» с «Run Shell Script» , действие которого вы можно назначить сочетание клавиш для: Системные настройки > Клавиатура > Сочетания клавиш > Службы

...