¿Hay alguna forma de crear un enlace duro en el buscador?


8

¿Hay alguna forma de crear un enlace duro en el buscador?

Se crearía un enlace duro en la terminal con:

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

mientras que un enlace simbólico / alias se puede hacer manteniendo presionado el comando y la opción o

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

(aunque aparentemente los comportamientos de 'alias' y 'ln' son diferentes )

Respuestas:


7

Puede crear un servicio de Automator como este:

ingrese la descripción de la imagen aquí

Esto toma los archivos seleccionados y crea enlaces duros a ellos en el directorio donde existen. Luego puede arrastrar y soltar los enlaces a la ubicación donde los desea.

Esto funcionará para archivos con espacios en sus nombres, pero no para archivos que contengan comillas en su nombre.

Puede acceder desde el menú Finder » Servicios , el menú contextual, y puede asignarle un método abreviado de teclado análogo al Lmétodo abreviado para los alias (quizás L).


1
¿Hay alguna manera de realizar una acción que surta efecto al arrastrar / soltar de una carpeta a otra mientras se mantiene presionada algo como la tecla de opción que proporciona la carpeta de destino para que el enlace duro se pueda crear directamente en el nuevo directorio?
Michael

@Michael probablemente lo haría mejor como una pregunta propia y no como un comentario sobre esta respuesta.
Daniel

1
Desde una bashperspectiva que debería funcionar en archivos con comillas en el nombre. ¿Hay alguna razón relacionada con Automator por qué no? (¿Probó que en realidad no funciona con comillas?)
Comodín el

Relacionado, de Unix & Linux Stack Exchange: ¿Cómo usar argumentos como $ 1 $ 2 ... en un bucle for? (Hay múltiples sintaxis más simples que puede usar.)
Comodín el

@Daniel: Extendí su solución con un código refinado para obtener "My File Hardlink.txt" en lugar de "My File.txt Hardlink" que dificulta la asociación del tipo de archivo. Por favor revise por pares Gracias.
porg

2

No hay forma de hacer esto en Finder.app. Sin embargo, si su objetivo es evitar escribir los comandos en Terminal.app, entonces puede usar Automator.app para crear un flujo de trabajo que haga los comandos por usted.


2

De hecho, quería que el término del enlace en el cambio de nombre con la extensión preservada, de lo contrario el buscador no reconocería el tipo de archivo.

así que usé la respuesta de Daniel (gracias por eso) y la cambié un poco

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

EDITAR: agregó lo que creo que es un mejor código de manejo de extensiones: debe estar en blanco si no hay una extensión presente. Lo sentimos, no soy bueno codificando scripts, así que comparta cualquier solución que crea que necesita.


Bastante bueno. Solo una advertencia: si tiene un archivo que no tiene ninguna extensión, obtendrá resultados realmente sorprendentes. (Y si uno de los directorios que contiene tiene un punto en el nombre, la sorpresa se manifestará en una forma diferente.)
Comodín el

1

Sí indirectamente

Automator le permite hacer servicios que ejecutan cualquier script de shell y también puede pedirle una ruta al destino para el enlace duro (ya que presumiblemente no estará en la misma ubicación que el original). Supongo que también podría establecer la ubicación del enlace en algún lugar, como un escritorio

Simplemente agregue un paso para abrir un cuadro de diálogo para ingresar o, de lo contrario, elija el destino y páselo a su lncomando.


1

Buena solución proporcionada por Daniel, pero sugiero reemplazar su código de script por el siguiente, que conserva el tipo de archivo.

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

¿Qué significa "no destructivo para el tipo de archivo"?
user151019

Seguí el patrón que usa el comando "hacer alias" del Finder. Por supuesto, puede cambiar la convención de nomenclatura como mejor le parezca.
Daniel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.