Comando per sbloccare i file "bloccati" su OS X


96

Ho copiato molti file di sola lettura da un sistema Windows sul mio Mac. Quando visualizzo le informazioni per ogni file utilizzando "Ottieni informazioni", vedo che sono bloccate. Sto scrivendo uno script bash per copiare su alcuni file e sto ricevendo un errore che dice "Operazione non consentita" Quindi, prima devo sbloccare i file. Dal momento che estrarrò spesso file dal sistema Windows, voglio che il mio script sblocchi questi file.

Qual è il comando del terminale per sbloccare i file "bloccati" su OSX?

Risposte:


136

Per sbloccare i file è possibile utilizzare:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = cambia flag su file / cartelle come "bloccato"
  • -R = ricorsivo o per tutto e seguire le directory all'interno della directory specificata
  • nouchg = indica che il file può essere modificato
  • /PATH/= ovviamente è il percorso dei file che si desidera modificare. Qualcosa del genere: ~/Sites/mysite/directory/with/locked/files/funziona anche.

1
Sembra che ho trovato la soluzione proprio mentre stavi rispondendo. Ho anche imparato che il -R è per ricorsivo. Quindi, per sbloccare tutti i file nella directory corrente usa <br/> chflags nochg * <br/> e per cambiare un solo file <br/> chflags nouchg onefile.txt Vedi: mehtanirav.com/2009/04/16/recursivamente -unlock-files-on-mac-os-x
Michael Prescott,

3
C'è un'altra bandiera rilevante schgche è la bandiera immutabile del sistema (vedi developer.apple.com/library/mac/documentation/Darwin/Reference/… ) Il comando per cancellarlo è simile:sudo chflags noschg PATH/TO/LOCKED/FILE
Andy Madge,

1
Utilizzare /bin/ls -lO /path/to/fileper visualizzare macOS flagssu file. Nota il percorso completo del lscomando macOS ' '. Questo è necessario se hai GNU Coreutils installato.
Tony Barganski,

15

Puoi anche usare SetFile -a l, anche se fa la stessa cosa di chflags nouchg:

SetFile -a l file.ext

-a ldisattiva il bit per l'attributo bloccato. Puoi installare SetFile scaricando il pacchetto Strumenti da riga di comando dalle preferenze di Xcode o da developer.apple.com/downloads .


Questo è il metodo che ha funzionato per me su macOS Sierra con alcuni file copiati da un computer Windows. Ho usato: SetFile -al ~ / Documents / Arduino / Samples / *
callisto

14

Ciò è utile se si desidera cercare un'intera directory e sbloccare tutti i file.

Nel terminale cdalla directory

Questo comando trova e stampa un elenco di essi .

$ find . -flags uchg

Questo comando li sblocca .

$ find . -flags uchg -exec chflags nouchg {} \;

Puoi usare il primo comando per ricontrollare che tutti i file siano sbloccati dopo aver eseguito il secondo comando, voilà!


1
Mentre funziona, può essere estremamente lento per un gran numero di file perché avvia un nuovo processo per ogni file.
Richard Waite,

1

In realtà ci sono due flag di blocco che possono essere impostati su un file: uchge schg. Un file che ha il uchgflag impostato è immutabile dagli utenti normali ma è mutabile dal sistema. Un file che ha il schgflag impostato è immutabile da chiunque. Entrambe le bandiere possono essere impostate contemporaneamente.

Per vedere quali flag sono impostati su un file, utilizzare

ls -lO FILE

Questa è una lettera maiuscola o, non zero.

Per sbloccare definitivamente un file, dovresti eseguire

chflags nouchg,noschg FILE

come se entrambe le bandiere fossero state impostate e ne rimuovessi solo una, rimarrà comunque bloccata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.