Esiste un modo per creare un collegamento reale nel Finder?


8

Esiste un modo per creare un collegamento reale nel Finder?

Un hard link nel terminale verrebbe creato con:

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

mentre un symlink / alias può essere fatto tenendo premuto comando e opzione o

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

(sebbene apparentemente i comportamenti di "alias" e "ln" siano diversi )

Risposte:


7

È possibile creare un servizio di Automator come questo:

inserisci qui la descrizione dell'immagine

Questo prende i file selezionati e crea collegamenti concreti a loro nella directory in cui esistono. È quindi possibile trascinare e rilasciare i collegamenti nella posizione in cui li si desidera.

Questo funzionerà per i file con spazi nei loro nomi, ma non per i file che contengono virgolette nel loro nome.

Puoi accedervi dal menu Finder » Servizi , dal menu di scelta rapida e puoi assegnargli una scorciatoia da tastiera analoga alla Lscorciatoia per gli alias (forse L).


1
Esiste un modo per eseguire un'azione che ha effetto quando si esegue un trascinamento da una cartella a un'altra tenendo premuto qualcosa come il tasto opzione che fornisce la cartella di destinazione in modo che il collegamento reale possa essere creato direttamente nella nuova directory?
Michael,

@Michael che probabilmente farebbe meglio come domanda a sé stante e non come commento a questa risposta.
Daniel

1
Da una bashprospettiva che dovrebbe funzionare su file con virgolette nel nome. C'è qualche motivo legato all'Automator perché non lo fa? (Hai provato che in realtà non funziona con le virgolette?)
Wildcard

Correlati, dallo scambio di stack Unix e Linux: come usare argomenti come $ 1 $ 2 ... in un ciclo for? (È possibile utilizzare più sintassi più semplici.)
Carattere jolly

@Daniel: ho esteso la tua soluzione con un codice raffinato per ottenere "My File Hardlink.txt" invece di "My File.txt Hardlink" che ostacola l'associazione del tipo di file. Si prega di rivederlo Grazie.
porg,

2

Non c'è modo di farlo in Finder.app stesso. Tuttavia, se il tuo obiettivo è solo quello di evitare di digitare i comandi in Terminal.app, puoi utilizzare Automator.app per creare un flusso di lavoro per eseguire i comandi per te.


2

In realtà volevo il termine del collegamento nella ridenominazione con l'estensione conservata, altrimenti finder non avrebbe riconosciuto il tipo di file.

così ho usato la risposta di Daniel (grazie per quello) e l'ho cambiata un po '

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: aggiunto quello che penso sia il miglior codice di gestione delle estensioni - dovrebbe essere vuoto se non è presente alcuna estensione. Siamo spiacenti, non sono bravo a scrivere script, quindi ti preghiamo di condividere eventuali correzioni che ritieni siano necessarie.


Piuttosto buono. Un avvertimento: se hai un file che non ha alcuna estensione, otterrai risultati davvero sorprendenti! (E se una delle directory contenenti contiene un punto nel nome, la sorpresa si manifesterà in una forma diversa.)
Wildcard

1

Sì, indirettamente.

Automator ti consente di creare servizi che eseguono qualsiasi script di shell e può anche chiederti un percorso per la destinazione per il collegamento reale (dal momento che non si troverà nella stessa posizione dell'originale presumibilmente). Suppongo che potresti impostare la posizione del collegamento in modo predefinito da qualche parte anche come un desktop.

Basta aggiungere un passaggio per far apparire una finestra di dialogo per entrare o altrimenti scegliere la destinazione e passarla al tuo lncomando.


1

Bella soluzione fornita da Daniel, ma suggerisco di sostituire il suo codice di script con quello sotto che conserva il tipo di file.

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

Che cosa significa "non distruttivo per il tipo di file"?
user151019,

Ho seguito il patern che usa il comando "make alias" del Finder. Ovviamente puoi cambiare la convenzione di denominazione come preferisci.
Daniel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.