Cientos de filepaths hacen referencia a un archivo genuino

0

Tengo un archivo, al que se refieren cientos de rutas de archivo.

In [96]: len(paths_list)
Out[96]: 191
In [97]: paths_list
Out[97]:
['~/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.CloudPhotosConfiguration/Data/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.PressAndHold/Data/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.iCal.CalendarNC/Data/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.languageassetd/Data/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.photos.VideoConversionService/Data/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.iCal/Data/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.share.Video.upload-Youku/Data/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.QuickTimePlayerX/Data/Desktop/Dev/sample.txt',
 '~/Library/Containers/com.apple.PassKit.PaymentAuthorizationUIExtension/Data/Desktop/Dev/sample.txt',
 ...]

Son del mismo archivo.

¿Cuál es el mecanismo detrás de esto?

    
pregunta JawSaw 16.11.2017 - 08:28

1 respuesta

1

Resulta que hay enlaces simbólicos que colocan su carpeta ~ \ Desktop en cada carpeta de datos. Entonces, si ejecuta el comando que se muestra a continuación, la salida contendrá muchas líneas impresas. La mayoría de estas líneas mostrarán una ruta a través de un enlace simbólico Data/Desktop . Tenga en cuenta que la opción -L hace que el comando find siga los enlaces simbólicos.

find  -L  ~  -name  sample.txt  -print

Si ejecuta el comando dado a continuación, se producirá la misma salida, menos las líneas que muestran una ruta a través de un enlace simbólico Data/Desktop .

find  ~  -name  sample.txt  -print

La salida del comando anterior debe contener al menos la siguiente línea.

/Users/YourUsername/Desktop/Dev/sample.txt

Un enlace simbólico es solo un archivo que contiene una cadena de caracteres. Cada entrada de directorio para dichos archivos contiene una bandera que indica que el archivo es un enlace simbólico. La cadena de caracteres almacenada en un archivo de enlace simbólico se puede imprimir ejecutando el comando readlink . Por ejemplo, podría ingresar el siguiente comando, en su computadora.

readlink  ~/Library/Containers/com.apple.CloudPhotosConfiguration/Data/Desktop

Esto produciría el siguiente resultado.

../../../../Desktop

Entonces, cuando se siguen los enlaces simbólicos y el nombre del archivo

~/Library/Containers/com.apple.CloudPhotosConfiguration/Data/Desktop/Dev/sample.txt

se encuentra, la cadena Desktop se reemplaza por la cadena ../../../../Desktop para producir

~/Library/Containers/com.apple.CloudPhotosConfiguration/Data/../../../../Desktop/Dev/sample.txt

que es equivalente a la

~/Desktop/Dev/sample.txt

nombre de archivo.

    
respondido por el David Anderson 16.11.2017 - 09:06

Lea otras preguntas en las etiquetas