Za předpokladu, že chcete nastavit bit oprávnění 755 rekurzivně pro obsah složek ve vašem aktuálním pracovním adresáři, kromě obsahu složky nazvané "nameOfFolderToBeExcluded" :
chmod 755 -R $(ls | awk '{if($1 != "nameOfFolderToBeExcluded"){ print $1 }}')
Můžete použít find
pro vyhledání všech souborů, které neodpovídají danému názvu souboru a exec
příkaz pro všechny takové soubory nalezené jako:
Za předpokladu, že potřebujete vyloučit adresář test
a všem ostatním souborům a adresářům udělte oprávnění 755 k souboru. To by bylo provedeno z vrcholu stromu.
find ! -name test -exec chmod 755 {} \;
Testováno
[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]:$
Oprávnění souboru pro soubor test
zůstal nezměněn. Totéž platí pro adresáře.
Jaká skořápka?
Pokud používáte bash (pravděpodobně pokud používáte Linux), můžete se podívat na extglob, který vám poskytuje více možností pro globování, včetně "negative glob" !()
shopt -s extglob
chmod 774 !(file-to-ignore)