Чи є якийсь спосіб створити міцне посилання в пошуку?


8

Чи є якийсь спосіб створити міцне посилання в пошуку?

Буде створено жорстке посилання в терміналі з:

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

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

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

(хоча, мабуть, поведінка "псевдоніму" та "ln" відрізняється )

Відповіді:


7

Ви можете створити службу автоматизації таким чином:

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

Це займає вибрані файли і створює жорсткі посилання на них у каталог, де вони існують. Потім можна перетягнути посилання на те місце, де ви їх хочете.

Це буде працювати для файлів з пробілами в їх іменах, але не для файлів, що містять лапки в їх імені.

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


1
Чи є спосіб зробити дію, яка набуває чинності під час перетягування з однієї папки в іншу, утримуючи щось на зразок клавіші опцій, яка забезпечує папку призначення, щоб жорстке посилання можна було створити безпосередньо в новому каталозі?
Майкл

@Michael, що, ймовірно, найкраще ставитиметься як власне питання, а не коментар до цієї відповіді.
Даниїл

1
З bashточки зору, який повинен працювати над файлами з лапками в імені. Чи є причина, пов'язана з автоматизатором, чому вона не відбувається? (Ви перевірили, що це насправді не працює з лапками?)
Wildcard

Пов'язано, з Unix & Linux Stack Exchange: Як використовувати такі аргументи, як $ 1 $ 2 ... у циклі for for? (Є кілька простих синтаксисів, які ви можете використовувати.)
Уайлдкард

@Daniel: Я розширив ваше рішення на вдосконалений код, щоб отримати "Мій файл Hardlink.txt" замість "Мій файл File.txt Hardlink", що перешкоджає асоціації типів файлів. Будь ласка, огляньте це Дякую.
порг

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

EDIT: додано те, що, на мій погляд, є кращим кодом обробки розширень - має бути порожнім, якщо немає розширення. Вибачте, я не дуже добре кодую сценарії, тому поділіться будь-якими виправленнями, на вашу думку, цього потрібно.


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

1

Так, опосередковано.

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

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


1

Хороше рішення, яке надає Даніель, але я пропоную замінити його скрипт-код на той, що нижче зберігає тип файлу.

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

Що означає "не руйнує для типу файлу"?
користувач151019

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