Есть ли способ создать жесткую ссылку в поисковике?


8

Есть ли способ создать жесткую ссылку в поисковике?

Жесткая ссылка в терминале будет создана с помощью:

ln /path/to/file /path/to/newpath

тогда как символическую ссылку / псевдоним можно сделать, удерживая команду и параметр или

ln -s /path/to/file /path/to/newpath

(хотя, очевидно, поведение alias и ln различно )

Ответы:


7

Вы можете создать сервис Automator следующим образом:

введите описание изображения здесь

Это берет выбранные файлы и создает жесткие ссылки на них в каталоге, где они существуют. Затем вы можете перетащить ссылки в место, где вы хотите их.

Это будет работать для файлов с пробелами в их именах, но не для файлов, содержащих кавычки в их имени.

Вы можете получить к нему доступ из меню Finder » Services , контекстного меню и назначить ему сочетание клавиш, аналогичное Lсочетанию клавиш для псевдонимов (возможно L).


1
Есть ли способ выполнить действие, которое вступает в силу при перетаскивании из одной папки в другую, удерживая что-то вроде клавиши выбора, которая обеспечивает целевую папку, чтобы жесткая ссылка могла быть создана непосредственно в новом каталоге?
Майкл

@ Майкл, который, вероятно, сделал бы лучше всего как вопрос сам по себе, а не как комментарий к этому ответу.
Даниил

1
С bashточки зрения того, что должны работать с файлами с кавычками в имени. Есть ли какая-то причина, связанная с Automator, почему это не так? (Вы проверяли, что он на самом деле не работает с кавычками?)
Wildcard

Связано с Unix & Linux Stack Exchange: Как использовать аргументы типа $ 1 $ 2… в цикле for? (Существует несколько более простых синтаксисов, которые вы можете использовать.)
Wildcard

@Daniel: я расширил ваше решение с помощью усовершенствованного кода, чтобы вместо «My File.txt Hardlink» получить «My File Hardlink.txt», что затрудняет сопоставление типов файлов. Пожалуйста, проверьте это Спасибо.
porg

2

Нет никакого способа сделать это в самом Finder.app. Однако, если ваша цель - просто не вводить команды в Terminal.app, вы можете использовать Automator.app, чтобы создать рабочий процесс для выполнения команд за вас.


2

Я действительно хотел, чтобы термин ссылки в переименовании сохранился с расширением, иначе искатель не распознал бы тип файла.

поэтому я использовал ответ Даниэля (спасибо за это) и немного его изменил

for f in "$@"
 do  
  dir=$(dirname "$f")
  filename=$(basename "$f")
  extension=$([[ "$filename" = *.* ]] && echo ".${filename##*.}" || echo '')
  filename="${filename%.*}"
  ln "$f" "${dir}/$filename Hardlink$extension"
done

РЕДАКТИРОВАТЬ: добавил то, что я считаю лучшим кодом обработки расширений - должен быть пустым, если расширение отсутствует. Извините, я не очень хорош в написании сценариев, поэтому, пожалуйста, поделитесь любыми исправлениями, которые, по вашему мнению, необходимы


Довольно хорошо. Просто предостережение: если у вас есть файл, который не имеет никакого расширения, вы получите действительно удивительные результаты! (И если в названии одного из содержащихся в нем каталогов есть точка, сюрприз проявится в другой форме.)
Wildcard

1

Да, косвенно.

Automator позволяет вам создавать сервисы, которые запускают любой скрипт оболочки, а также может запрашивать у вас путь к месту назначения для жесткой ссылки (так как он предположительно не будет находиться в том же месте, что и оригинал). Я полагаю, вы могли бы по умолчанию указать расположение ссылки где-то вроде рабочего стола.

Просто добавьте шаг, чтобы открыть диалоговое окно, чтобы ввести или иным образом выбрать пункт назначения и передать его своей lnкоманде.


1

Хорошее решение, предоставленное Дэниелом, но я предлагаю заменить его код скрипта на приведенный ниже, который сохраняет тип файла.

for f in "$@"
do  
  ln "$f" "Plink-$(basename "$f")"
done

Что значит «не разрушительно для типа файла»?
user151019

Я следовал за паттерном, который использует команда Finder "make alias". Конечно, вы можете изменить соглашение об именах, как считаете нужным.
Даниил
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.