Czy jest jakiś sposób na utworzenie twardego linku w wyszukiwarce?


8

Czy jest jakiś sposób na utworzenie twardego linku w wyszukiwarce?

Twarde łącze w terminalu zostanie utworzone za pomocą:

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

podczas gdy dowiązanie symboliczne / alias można wykonać przytrzymując polecenie i opcję lub

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

(choć najwyraźniej zachowania „alias” i „ln” są różne )

Odpowiedzi:


7

Możesz utworzyć usługę Automator w następujący sposób:

wprowadź opis zdjęcia tutaj

Spowoduje to pobranie wybranych plików i utworzenie twardych łączy do nich w katalogu, w którym one istnieją. Następnie możesz przeciągnąć i upuścić łącza do miejsca, w którym chcesz.

Działa to w przypadku plików ze spacjami w nazwach, ale nie dotyczy plików zawierających znaki cudzysłowu w nazwie.

Możesz uzyskać do niego dostęp z menu Finder » Usługi, menu kontekstowego i możesz mu przypisać skrót klawiaturowy analogiczny do Lskrótu dla aliasów (być może L).


1
Czy istnieje sposób na wykonanie akcji, która zacznie działać podczas przeciągania / upuszczania z jednego folderu do drugiego, przytrzymując jednocześnie klawisz opcji, który zapewnia folder docelowy, aby można było utworzyć bezpośrednie łącze w nowym katalogu?
Michael

@Michael, który prawdopodobnie zrobiłby najlepiej jako własne pytanie, a nie komentarz do tej odpowiedzi.
Daniel

1
Z bashperspektywy, która powinna działać na plikach ze znakami cudzysłowu w nazwie. Czy jest jakiś powód związany z Automatorem, dlaczego tak nie jest? (Czy testowałeś, że tak naprawdę nie działa ze znakami cudzysłowu?)
Wildcard

Powiązane z Unix & Linux Stack Exchange: Jak używać argumentów takich jak $ 1 $ 2… w pętli for? (Można użyć wielu prostszych składni.)
Wildcard,

@Daniel: Rozszerzyłem twoje rozwiązanie o dopracowany kod, aby uzyskać „My File Hardlink.txt” zamiast „My File.txt Hardlink”, który utrudnia skojarzenie typu pliku. Proszę, przejrzyj to Dziękujemy.
porg

2

Nie można tego zrobić w samym Finder.app. Jeśli jednak Twoim celem jest uniknięcie wpisywania poleceń w Terminal.app, możesz użyć Automator.app, aby utworzyć przepływ pracy, aby wykonać polecenia za Ciebie.


2

Naprawdę chciałem, aby termin linku w nazwie został zmieniony z rozszerzeniem, inaczej wyszukiwarka nie rozpoznałaby typu pliku.

więc użyłem odpowiedzi Daniela (dzięki za to) i trochę ją zmieniłem

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

EDYCJA: dodałem, co moim zdaniem, lepszy kod obsługi rozszerzenia - powinien być pusty, jeśli nie ma rozszerzenia. Niestety, nie jestem dobry w kodowaniu skryptów, więc podziel się z nami wszelkimi poprawkami, które według ciebie są potrzebne.


Całkiem dobre. Tylko zastrzeżenie: jeśli masz plik, który nie ma żadnego rozszerzenia, otrzymasz naprawdę zaskakujące wyniki! (A jeśli jeden z zawierających katalogów zawiera kropkę w nazwie, niespodzianka zamanifestuje się w innej formie).
Wildcard,

1

Tak, pośrednio.

Automator pozwala ci tworzyć usługi, które uruchamiają dowolny skrypt powłoki, a także może poprosić cię o ścieżkę do miejsca docelowego dla twardego łącza (ponieważ prawdopodobnie nie będzie on w tej samej lokalizacji, co oryginał). Podejrzewam, że możesz ustawić domyślną lokalizację linku również na pulpicie.

Wystarczy dodać krok, aby wyświetlić okno dialogowe, aby wprowadzić lub w inny sposób wybrać miejsce docelowe i przekazać je do lnpolecenia.


1

Ładne rozwiązanie dostarczone przez Daniela, ale proponuję zastąpić jego kod skryptu tym, który zachowuje typ pliku.

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

Co oznacza „nieniszczący dla typu pliku”?
user151019,

Podążyłem za wzorem, z którego korzysta polecenie „make alias” Findera. Możesz oczywiście zmienić konwencję nazewnictwa według własnego uznania.
Daniel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.