Come modificare le autorizzazioni di più file trovati con il comando find?


11

Ho una directory con numerosi file. Parte dei file ha i 755permessi e l'altra parte ha i 644permessi. Vorrei convertire i file con le 755autorizzazioni in 644. Ho provato la seguente riga eseguendolo dalla directory stessa:

find . -perm 755 -exec chmod 644 {}\;

Tuttavia, di conseguenza, l'autorizzazione è cambiata solo per la directory stessa e dopo averla modificata ho scoperto che le autorizzazioni dei file sono rimaste invariate. Mi manca qualcosa?


Il tuo comando rimuove il bit eseguibile dalla directory, rendendo impossibile chdir ad esso e guardare i file che contiene. Ecco perché il comando non sembra funzionare. Prova find ./ -type f -exec chmod -x {} \;invece.
Shadur,

Risposte:


17

Ok, sembra che ho trovato il problema. Sembra che ci sia uno spazio obbligatorio tra {}e \;, quindi il comando sarà simile al seguente:

find . -perm 755 -exec chmod 644 {} \;

Piuttosto che:

find . -perm 755 -exec chmod 644 {}\;

Inoltre, il problema con la modifica delle autorizzazioni della directory può essere risolto aggiungendo un -type fflag, quindi apparirà come segue:

find . -type f -perm 755 -exec chmod 644 {} \;

6
È possibile utilizzare +invece di \;ridurre il numero di sottoprocessi creati.
Kevin,

-type dtroverà directory. -type ftroverà i file.
Mick T
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.