Gibt es eine Möglichkeit, eine feste Verbindung im Finder herzustellen?

8

Gibt es eine Möglichkeit, eine feste Verbindung im Finder herzustellen?

Ein fester Link im Terminal würde erstellt mit:

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

Ein Symlink / Alias ​​kann durch Halten von Befehl und Option oder erfolgen

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

(obwohl anscheinend die Verhaltensweisen von 'alias' und 'ln' unterschiedlich sind )

Keflavich
quelle

Antworten:

7

Sie können einen Automator-Dienst wie folgt erstellen:

Geben Sie hier die Bildbeschreibung ein

Dadurch werden die ausgewählten Dateien verwendet und in dem Verzeichnis, in dem sie vorhanden sind, feste Links zu ihnen erstellt. Sie können die Links dann per Drag & Drop an die gewünschte Stelle ziehen.

Dies funktioniert für Dateien mit Leerzeichen im Namen, jedoch nicht für Dateien mit Anführungszeichen im Namen.

Sie können über das Menü Finder » Dienste und das Kontextmenü darauf zugreifen und ihm eine Tastenkombination zuweisen, die der LVerknüpfung für Aliase (möglicherweise L) entspricht.

Daniel
quelle
1
Gibt es eine Möglichkeit, eine Aktion auszuführen, die beim Ziehen / Ablegen von einem Ordner in einen anderen wirksam wird, während Sie die Optionstaste gedrückt halten, die den Zielordner bereitstellt, damit der feste Link direkt im neuen Verzeichnis erstellt werden kann?
Michael
@ Michael, das wäre wahrscheinlich am besten als eigene Frage und nicht als Kommentar zu dieser Antwort.
Daniel
1
Aus einer bashPerspektive, die für Dateien mit Anführungszeichen im Namen funktionieren sollte . Gibt es einen Automator-Grund, warum dies nicht der Fall ist? (Haben Sie getestet, dass es tatsächlich nicht mit Anführungszeichen funktioniert?)
Wildcard
Verwandte Themen aus dem Unix- und Linux-Stack-Exchange: Wie werden Argumente wie $ 1 $ 2… in einer for-Schleife verwendet? (Es gibt mehrere einfachere Syntaxen, die Sie verwenden können.)
Wildcard
@ Daniel: Ich habe Ihre Lösung um einen verfeinerten Code erweitert, um "My File Hardlink.txt" anstelle von "My File.txt Hardlink" zu erhalten, was die Dateitypzuordnung behindert. Bitte Peer Review es Danke.
Porg
2

In Finder.app selbst gibt es keine Möglichkeit, dies zu tun. Wenn Sie jedoch nur vermeiden möchten, die Befehle in Terminal.app einzugeben, können Sie mit Automator.app einen Workflow erstellen, um die Befehle für Sie auszuführen.

conorgriffin
quelle
2

Ich wollte eigentlich, dass der Link-Begriff beim Umbenennen mit der Erweiterung erhalten bleibt, sonst würde der Finder den Dateityp nicht erkennen.

Also habe ich Daniels Antwort verwendet (danke dafür) und sie ein wenig geändert

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

BEARBEITEN: Ich habe hinzugefügt, was meiner Meinung nach ein besserer Code für die Behandlung von Erweiterungen ist. Sollte leer sein, wenn keine Erweiterung vorhanden ist. Entschuldigung, ich bin nicht gut darin, Skripte zu codieren. Bitte teilen Sie alle Korrekturen mit, die Sie für erforderlich halten.

Prasanth
quelle
Ziemlich gut. Nur eine Einschränkung: Wenn Sie eine Datei, die nicht der Fall ist jede Erweiterung haben, werden Sie einige wirklich überraschende Ergebnisse erhalten! (Und wenn eines der enthaltenen Verzeichnisse einen Punkt im Namen hat, wird sich die Überraschung in einer anderen Form manifestieren.)
Wildcard
1

Ja, indirekt.

Mit Automator können Sie Dienste erstellen, die ein beliebiges Shell-Skript ausführen, und Sie können auch nach einem Pfad zum Ziel für die feste Verbindung gefragt werden (da diese sich vermutlich nicht am selben Speicherort wie das Original befindet). Ich nehme an, Sie könnten den Linkspeicherort auch irgendwo wie auf einem Desktop festlegen.

Fügen Sie einfach einen Schritt hinzu, um ein Dialogfeld zum Eingeben aufzurufen, oder wählen Sie das Ziel auf andere Weise aus und übergeben Sie es an Ihren lnBefehl.

bmike
quelle
1

Schöne Lösung von Daniel, aber ich schlage vor, seinen Skriptcode durch den folgenden zu ersetzen, der den Dateityp beibehält.

for f in "$@"
do  
  ln "$f" "Plink-$(basename "$f")"
done
Louis Lietaer
quelle
Was bedeutet "nicht destruktiv für Dateityp"?
user151019
Ich folgte dem Muster, das der Finder-Befehl "make alias" verwendet. Sie können die Namenskonvention natürlich nach Belieben ändern.
Daniel