найдите, что сценарий оболочки выполняет команду для каждого файла

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

shellscript.sh searchphrase выполняется:

  1. создайте папку на настольных "Результатах" если не там

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

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

спасибо

1
задан 03.10.2010, 17:23

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
1
ответ дан 17.12.2019, 00:37

мой успех:

#!/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
0
ответ дан 17.12.2019, 00:37

Теги

Похожие вопросы