Individua percorsi file lunghi su un'unità esterna con terminale

3

Ho bisogno di spostare un grande volume su un nuovo server raid formattato per PC. Tuttavia ho un paio di percorsi e nomi di file che stanno interrompendo questo processo.

Vorrei solo sapere come usare il terminale per:

  1. Individua l'unità esterna di destinazione
  2. Quindi cerca quell'unità per percorsi / file che hanno più di 130 caratteri

Qualcuno può aiutarti?

So come cercare i percorsi lunghi trova ". -type f -name '????? ... *'", non sono sicuro di come scegliere come target il mio disco esterno.

    
posta handpaintedstudio 17.07.2017 - 22:31
fonte

2 risposte

3

L'unità esterna è montata in /Volumes , esegui ls /Volumes per vedere il nome esatto.

Successivamente puoi usare

find /Volumes/NAME-FROM-ABOVE -print |
    while read line; do [[ ${#line} -gt 130 ]] && echo $line; done

per elencare tutti i file in cui percorso e nome file combinati hanno una lunghezza superiore a 130 caratteri.

PS: non funzionerà con nomi di file / percorsi contenenti nuove righe e materiale simile (che di solito non è un problema) PPS: se il tuo nome volume contiene spazi, devi avvolgerlo in "" - > find "/Volumes/LaCie - BRYT" -print ...

    
risposta data 17.07.2017 - 22:41
fonte
4

Il seguente comando stamperà tutti i file che hanno più di 130 caratteri

find -E . -type f -regex '.*[^/]{130}'

Il comando Terminale (bash) per elencare i dischi collegati al sistema è diskutil . Il comando diskutil list genererà tutti i dischi - basta selezionare l'identificatore che corrisponde al dispositivo esterno.

Ad esempio:

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:                  Apple_HFS FreeAgent Go            499.8 GB   disk3s2
/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk4
   1:                        EFI EFI                     209.7 MB   disk4s1
   2:                  Apple_HFS My Passport for Mac     999.8 GB   disk4s2

disk0 , disk1 e disk2 si trovano in un volume CoreStorage. disk3 e disk4 sono i miei driver esterni

Per accedere all'unità (supponendo che sia montata), cerca nella directory /Volumes il punto di montaggio appropriato.

Supponendo che tu voglia cercare "My Passport per Mac" devi inserire il comando:

find -E /Volumes/My\ Passport\ for\ Mac/ -type f -regex '.*[^/]{130}'
    
risposta data 17.07.2017 - 22:41
fonte

Leggi altre domande sui tag