Existe-t-il un moyen de créer un lien dur dans le Finder?


8

Existe-t-il un moyen de créer un lien dur dans le Finder?

Un lien dur dans le terminal serait créé avec:

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

alors qu'un lien symbolique / alias peut être fait en maintenant la commande et l'option ou

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

(bien qu'apparemment les comportements de 'alias' et de 'ln' soient différents )

Réponses:


7

Vous pouvez créer un service Automator comme celui-ci:

entrez la description de l'image ici

Cela prend les fichiers sélectionnés et crée des liens durs vers eux dans le répertoire où ils existent. Vous pouvez ensuite faire glisser et déposer les liens vers l'emplacement où vous les souhaitez.

Cela fonctionnera pour les fichiers avec des espaces dans leurs noms, mais pas pour les fichiers contenant des guillemets dans leur nom.

Vous pouvez y accéder à partir du menu Finder » Services , du menu contextuel, et vous pouvez lui affecter un raccourci clavier analogue au Lraccourci pour les alias (peut-être L).


1
Existe-t-il un moyen de faire une action qui prend effet lors d'un glisser / déposer d'un dossier à un autre tout en maintenant enfoncé quelque chose comme la touche d'option qui fournit le dossier de destination afin que le lien dur puisse être créé directement dans le nouveau répertoire?
Michael

@Michael qui ferait probablement mieux en tant que question propre et non en tant que commentaire sur cette réponse.
Daniel

1
D'un bashpoint de vue qui devrait fonctionner sur les fichiers avec des guillemets dans le nom. Y a-t-il une raison liée à Automator pour laquelle ce n'est pas le cas? (Avez-vous testé qu'il ne fonctionne pas avec des guillemets?)
Wildcard

Connexes, à partir de la pile d'échange Unix et Linux: Comment utiliser des arguments comme $ 1 $ 2… dans une boucle for? (Il existe plusieurs syntaxes plus simples que vous pouvez utiliser.)
Wildcard

@Daniel: J'ai étendu votre solution avec un code raffiné afin d'obtenir «My File Hardlink.txt» au lieu de «My File.txt Hardlink» qui gêne l'association des types de fichiers. Veuillez l'examiner par des pairs Merci.
porg

2

Il n'y a aucun moyen de le faire dans Finder.app lui-même. Cependant, si votre objectif est simplement d'éviter de taper les commandes dans Terminal.app, vous pouvez utiliser Automator.app pour créer un flux de travail pour exécuter les commandes pour vous.


2

Je voulais en fait le terme du lien dans le renommage avec l'extension préservée sinon le finder ne reconnaîtrait pas le type de fichier.

alors j'ai utilisé la réponse de Daniel (merci pour ça) et l'ai un peu changé

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: ajouté ce que je pense être un meilleur code de gestion des extensions - devrait être vide si aucune extension n'est présente. Désolé, je ne suis pas doué pour coder les scripts, veuillez donc partager les correctifs dont vous pensez avoir besoin.


Assez bien. Juste une mise en garde: si vous avez un fichier sans extension, vous obtiendrez des résultats vraiment surprenants! (Et si l'un des répertoires contenant a un point dans le nom, la surprise se manifestera sous une forme différente.)
Wildcard

1

Oui, indirectement.

Automator vous permet de créer des services qui exécutent n'importe quel script shell et peut également vous demander un chemin vers la destination du lien dur (car il ne sera pas au même endroit que l'original probablement). Je suppose que vous pouvez également définir l'emplacement du lien par défaut comme un bureau.

Ajoutez simplement une étape pour faire apparaître une boîte de dialogue pour entrer ou choisir la destination et transmettez-la à votre lncommande.


1

Belle solution fournie par Daniel, mais je suggère de remplacer son code de script par celui ci-dessous qui préserve le type de fichier.

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

Que signifie «non destructif pour le type de fichier»?
user151019

J'ai suivi le motif utilisé par la commande "make alias" du Finder. Vous pouvez bien sûr modifier la convention de dénomination comme bon vous semble.
Daniel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.