Найти командную строку для каждого файла

Я обнаружил, что команда "найти" намного быстрее, чем "Spotlight" в Mac OS X. Я скорее визуализирую результаты с помощью автоматизатора, но не повезло, поэтому я надеюсь, что фанаты из SU помогут с решением по этому поводу.

поисковая фраза shellscript.sh выполняет:

  1. создать папку на рабочем столе "Результаты", если не существует

  2. удалить все в этой папке (свежие результаты)

  3. foreach результат создать симлинк

благодарю вас

2 ответа

Вот версия с несколькими улучшениями.

  • Не включайте ваше имя пользователя в сценарий, используйте ~ сослаться на ваш домашний каталог.

  • Сохраните имя каталога результатов в переменной. Это показывает, как использовать переменную в сценарии оболочки.

  • Сделайте деталь, которая удаляет результат предыдущего поиска, более надежной: она не удалит ничего, кроме символической ссылки.

  • Самое главное: ваша версия не будет работать с именами файлов, содержащими пробелы или некоторые специальные символы, потому что оболочка выполняет некоторый повторный анализ результата $(...) а также $file, Вы всегда должны ставить подстановки переменных в двойных кавычках (т.е. писать "$file"). Моя версия корректно работает со всеми именами файлов (за исключением случаев, когда они содержат символы новой строки, но это неизбежно при locate).

#!/bin/bash
results_dir=~/Desktop/results
mkdir -p "$results_dir"
find "$results_dir" -type l -exec rm {} +
echo "Please enter some input: "
read -r input_variable
locate "$input_variable" | while read -r line; do
  ln -s "$line" "$results_dir/"
done

Мой прогресс:

#!/bin/bash
rm -rf /Users/arpecop/Desktop/results/
mkdir /Users/arpecop/Desktop/results/
echo "Please enter some input: "
read input_variable
for file in $(locate "$input_variable")
do
ln -s $file  /Users/arpecop/Desktop/results/
done
Другие вопросы по тегам