Я пытаюсь использовать вывод mdfind
для создания набора символических ссылок. Вывод mdfind
выглядит следующим образом:
/pathtofile1/
/pathtofile2/
/pathtofile3/
Итак, я использовал sed
, чтобы добавить ln -s
в начало каждой строки, и awk {print $0 "/directory where I want this/"}
;
после того, как мой однострочный скрипт успешно выводит это:
ln -s "/pathtofile1/" "/каталог, где я хочу это"
ln -s "/pathtofile2/" "/каталог, где я хочу это"
ln -s "/pathtofile3/" "/каталог, где Я хочу этот"
Проблема в том, что когда я запускаю это, я получаю эту ошибку: «/ каталог, где я хочу это: файл не существует»
Странно то, что когда я запускаю эти строки по отдельности, они создают ссылки, как и ожидалось, но выполнение всей команды возвращает указанную выше ошибку.
Любые идеи?
Я не думаю, что это идеальный способ сделать то, что я пытаюсь сделать, поэтому дайте мне знать, если у вас есть лучшие решения.
Отредактировано с дополнительной информацией.
#! /bin/bash
itemList=`mdfind -s "$1"| awk '{ print "ln -s \""$0"\" \"/Users/username/Local/Recent\""}'`
echo "$itemList"
`$itemList`
$1 — это тестовый *.savedSearch, возвращающий список файлов.
Мой результат (из эха):
ln -s "/Users/username/Dropbox/Document.pdf" "/Users/username/Local/Recent"
ln -s "/Users/username/Dropbox/Document2.pdf" "/Users/username/Local/Recent"
и ошибка, которую я получаю:
ln: "/Users/username/Local/Recent": Нет такого файла или каталога
Но если я запускаю копирование и вставку каждой строки по отдельности, ссылки создаются, как и ожидалось.
$items
в обратных кавычках. hat сводит список в одну строку, выполняет ее и фиксирует стандартный вывод (его нет), а затем выполняет эту пустую строку! Предложение: выведите точку с запятой вawk
после второй кавычки, заключающей имя целевого каталога. Это оставит вас с действительной оболочкой. Затем, когда дело доходит до выполнения «скрипта», не заключайте его в обратные кавычки. Вам может понадобитьсяeval
, или вы можете просто направить вывод сценарияawk
вsh
(илиbash
), опционально с-x
для трассировки. - person Jonathan Leffler   schedule 29.08.2012