En supposant que vous souhaitiez définir le bit d'autorisation 755 de manière récursive pour le contenu des dossiers de votre répertoire de travail actuel, à l'exception du contenu du dossier appelé "nameOfFolderToBeExcluded" :
chmod 755 -R $(ls | awk '{if($1 != "nameOfFolderToBeExcluded"){ print $1 }}')
Vous pouvez utiliser find
pour rechercher tous les fichiers qui ne correspondent pas au nom de fichier donné et exec
une commande sur tous ces fichiers trouvés comme :
En supposant que vous deviez exclure le répertoire test
et accordez les autorisations de fichier 755 à tous les autres fichiers et répertoires. Cela serait exécuté du haut de l'arbre.
find ! -name test -exec chmod 755 {} \;
Testé
[email protected]:$ touch a1.txt a2.txt a3.txt test
[email protected]:$ ls -lrt
total 0
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 test
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 a3.txt
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 a2.txt
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 a1.txt
[email protected]:$ find ! -name test -exec chmod 777 {} \;
[email protected]:$ ls -lrt
total 0
-rw-rw-r-- 1 mtk mtk 0 Sep 17 23:55 test
-rwxrwxrwx 1 mtk mtk 0 Sep 17 23:55 a3.txt*
-rwxrwxrwx 1 mtk mtk 0 Sep 17 23:55 a2.txt*
-rwxrwxrwx 1 mtk mtk 0 Sep 17 23:55 a1.txt*
[email protected]:$
Les autorisations de fichier pour le fichier test
resté inchangé. Il en va de même pour les répertoires.
Quelle coquille ?
Si vous utilisez bash (probablement si vous êtes sous Linux), vous pouvez consulter extglob, qui vous donne plus d'options pour le globbing, y compris le "glob négatif" !()
shopt -s extglob
chmod 774 !(file-to-ignore)