Suponiendo que desea establecer el bit de permiso 755 de forma recursiva para el contenido de las carpetas en su directorio de trabajo actual, aparte del contenido de la carpeta llamada "nameOfFolderToBeExcluded" :
chmod 755 -R $(ls | awk '{if($1 != "nameOfFolderToBeExcluded"){ print $1 }}')
Puedes usar find
para buscar todos los archivos que no coincidan con el nombre de archivo dado y exec
un comando en todos los archivos encontrados como:
Suponiendo que necesita excluir el directorio test
y otorgue permisos de archivo 755 a todos los demás archivos y directores. Esto se ejecutaría desde la parte superior del árbol.
find ! -name test -exec chmod 755 {} \;
Probado
[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]:$
Los permisos de archivo para el archivo test
permanecido sin cambios. Lo mismo se aplica a los directorios.
¿Qué caparazón?
Si está ejecutando bash (probablemente si está en Linux), puede consultar extglob, que le brinda más opciones para glob, incluido el "glob negativo" !()
shopt -s extglob
chmod 774 !(file-to-ignore)