Come creare una directory ricorsivamente includendo file o directory nascosti


37

Sembra chown con la bandiera ricorsiva non funzionerà su directory o file nascosti. C'è qualche semplice soluzione per questo?

Risposte:


56

Sono abbastanza sicuro che la -Rbandiera funzioni - lo è sempre per me. Ciò che non funzionerà e ciò che mi ha fatto scattare all'inizio del mio utilizzo da riga di comando, è l'utilizzo *in una directory con file / directory nascosti. Così facendo

$ chown -R /home/user/*

non eseguirà i file e le directory nascosti. Tuttavia se lo segui con

$ chown -R /home/user/.[^.]*

allora farai tutti i file nascosti, (ma non .o ..come /home/user/.*faresti). Detto questo, mi sarei aspettato

$ chown -R /home/user

per ottenere tutti i file e le directory nascosti all'interno /home/user, anche se ovviamente ciò cambierà anche le autorizzazioni della directory stessa, che potrebbe non essere ciò che intendevi.


3
Fare una chowndirectory ha l'effetto collaterale di modificare le autorizzazioni sulla directory stessa e tutto il suo contenuto, che può essere o meno ciò che si desidera.
wfaulk,

A + ha funzionato come un incanto per me.
SuperFamousAcquista il

Ho provato chown nginx:nginx -R /path/to/.[^.]*e ha cambiato solo la proprietà in file nascosti .dot. non tutto.
Pathros,

@wfaulk Come è stato menzionato da @Hamish Downer, è necessario eseguire entrambe le operazioni *e seguirlo .[.^]*per ottenere tutti i file.
god_is_love il

9

credo che il seguente comando dovrebbe funzionare per questo

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/

1
-h influisce sui collegamenti simbolici anziché su qualsiasi file di riferimento (utile solo sui sistemi che possono modificare la proprietà di un collegamento simbolico)
R. van Twisk,

8

"chown -R" funziona, ma un'alternativa sarebbe usare find.

 find /path/to/dir -exec chown USER {} \;

5
nota che con GNU find, usare al +posto di ;come terminatore di -exec sarà più efficiente in quanto utilizzerà il numero minimo necessario di forcelle per chown invece di un fork per file / directory
stew

3

È possibile modificare l' dotglobattributo temporaneamente per espandere. file e quindi ripristinarlo.

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

Ulteriori informazioni dotglobsono disponibili qui


2

Usando per-ciclo con ls -Al'opzione, possiamo trovare tutti i file nascosti e directory escludere .e ..quindi modificare la proprietà per tutti i file nascosti e le directory.

for i in `ls -A | grep "^\."`;do chown -R user:group $i;done

Usa l' xargsopzione conls -A

ls -A | grep "^\." | xargs chown user:group

Per maggiori dettagli Fare clic qui e visitare il mio sito


1

Inoltre, se sei come me, probabilmente eseguirai chown principalmente dalla directory corrente. Ero abituato a correre in questo modo: chown rails.rails -R *. Semplicemente cambiando l'asterisco in un punto (abbreviazione della directory corrente) in questo modo: chown rails.rails -R .porta in tutte le directory nascoste.


2
Con l'effetto collaterale di modificare le autorizzazioni sulla directory corrente e su tutto il suo contenuto, che può o meno essere quello che desideri.
wfaulk,

1

chownfunzionerà con file e directory nascosti. Nel seguente esempio, cambieremo la proprietà dell'utente e del gruppo per tutti i file in ~/some/folder. Tutti i file includono tutti i file nascosti (ad esempio .bashrc, .profileecc.) E le cartelle a ~/some/folderlivello e sotto. Si noti in particolare che non desideriamo cambiare la proprietà di ~/some, quindi escluderemo il file ~/some/..dalle modifiche di proprietà.

$ cd ~/some/folder 
$ sudo chown -R usrname:grpname . 
$ 

Questo ha funzionato per me
Klor il

0

Chown TUTTI i file nella directory corrente e nelle sottodirectory per l'utente corrente;

find . -exec chown $(whoami) {} \;

o se l'utente non è in grado di scaricare alcuni file a causa di autorizzazioni limitate;

sudo find . -exec chown $(logname) {} \;

-2

Potresti fare qualcosa del genere

for i in `ls -A`;do chown -R user:group $i;done

La -A( maiuscola A) è importante in quanto esclude "." e '..'


Ciò modificherà solo i file e le sottodirectory nella directory corrente, non i livelli inferiori. (Quale potrebbe essere ciò che l'OP vuole.) Si interromperà anche sui nomi di file e directory con spazi (o schede) in essi.
wfaulk,
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.