Я хотел бы просмотреть свою домашнюю папку и перечислить все символические ссылки, которые указывают на элемент, имеющий Dropbox на своем пути. Следующая команда (плюс некоторая постобработка для удаления дополнительного поля информации, но это не должно быть сложным) почти выполняет задачу.
ls -alR ~ | grep -e "->" | grep Dropbox
В выводе моего ls
маркер ->
предшествует пути к цели символической ссылки. Чтобы получить только символические ссылки, указывающие на что-то в Dropbox, я передаю вывод через окончательный grep. Однако есть проблема: таким образом я получаю только имя символической ссылки, а не полный путь. С другой стороны, используя команду типа:
ls -alR ~ | grep -e "->" | grep -E '(Dropbox|:)'
сохранение списка путей ls
(в рекурсивном поиске ls
сначала выводит указанную папку, за которой следует двоеточие) приводит к слишком большому количеству совпадений. Любые идеи?
ls
, если вам приходится иметь дело с враждебными именами файлов (содержащими, например,->
или новую строку, а иногда даже пробелы и табуляции). - person Jonathan Leffler   schedule 30.11.2013{}
над полем редактирования. (Ходят слухи, что это делает и комбинация control-K; я ей не пользовался.) - person Jonathan Leffler   schedule 30.11.2013ls -la | while read -r line1 && read -r line2; do cp /dev/null $'\n'"$line1"$'\n'"$line2"; done
. Это работает «лучше», если у вас есть символические ссылки в каталоге. Это в значительной степени гарантирует, что наивные сценарии оболочки потерпят ужасный сбой. - person Jonathan Leffler   schedule 30.11.2013