Centinaia di percorsi di file fanno riferimento a un file originale

0

Ho un file, a cui fanno riferimento centinaia di percorsi file.

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',
 ...]

Sono dello stesso file.

Qual è il meccanismo dietro di esso?

    
posta JawSaw 16.11.2017 - 08:28
fonte

1 risposta

1

Ci sono collegamenti simbolici che mettono la tua cartella ~ \ Desktop in ogni cartella Data. Quindi se si esegue il comando mostrato di seguito, l'output conterrà molte linee stampate. La maggior parte di queste linee mostrerà un percorso attraverso un link simbolico Data/Desktop . Nota, l'opzione -L fa sì che il comando find segua i collegamenti simbolici.

find  -L  ~  -name  sample.txt  -print

Se esegui il comando indicato di seguito, verrà prodotto lo stesso output, meno le linee che mostrano un percorso attraverso un link simbolico Data/Desktop .

find  ~  -name  sample.txt  -print

L'output del comando precedente dovrebbe contenere almeno la riga seguente.

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

Un link simbolico è solo un file contenente una stringa di caratteri. Ogni voce di directory per tali file contiene un flag che indica che il file è un collegamento simbolico. La stringa di caratteri memorizzata in un file di collegamento simbolico può essere stampata eseguendo il comando readlink . Ad esempio, potresti inserire il seguente comando, sul tuo computer.

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

Questo produrrebbe il seguente output.

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

Quindi, quando i link simbolici vengono seguiti e il nome del file

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

, la stringa Desktop viene sostituita dalla stringa ../../../../Desktop per produrre

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

che è equivalente a

~/Desktop/Dev/sample.txt

nome file.

    
risposta data 16.11.2017 - 09:06
fonte

Leggi altre domande sui tag