czym jest symbol wieloznaczny, aby wybrać wszystkie katalogi w katalogu

13

Chcę ustawić lepki bit dla wszystkich katalogów w katalogu z wyłączeniem plików. czy jest na to jakaś dzika karta?

#sudo chmod g+s /var/www/<WILD_CARD_FOR_ALL_DIRECTORIES>
Krawat
źródło

Odpowiedzi:

24

Służy */do dopasowania tylko katalogów.

chmod g+s /var/www/*/

Aby dopasować wszystkie używane katalogi i podkatalogi **/*/(pod warunkiem, że globstarwłączyłeś bash):

shopt -s globstar
chmod g+s /var/www/**/*/
dogbane
źródło
2
Działa dobrze, ale zepsuje się, gdy tylko rozszerzona długość wiersza poleceń przekroczy limit długości wiersza poleceń. -> cyberciti.biz/faq/argument-list-too-long-error-solution
Bonsi Scott
1
tak, jestem tego w pełni świadomy. Jednak OP poprosił o „symbol wieloznaczny”.
dogbane
Tak! poprosiłem o znak wieloznaczny, niżq.
Necktwi,
wiem, że poprosił o rozwiązanie wieloznaczne. Podkreśliłem tylko, że w pewnych okolicznościach może się nie powieść. Poza tym, nie ma tu krytyka (skomentowałem jeszcze, ponieważ głosowałem, ponieważ jest to skuteczne rozwiązanie w większości przypadków) ^^
Bonsi Scott
13

możesz użyć find, patrz poniższy przykład

find /var/www/ -type d -exec chmod g+s {} \;
Rahul Patil
źródło
3
To miłe, ale nie wieloznaczne - ale ma tę zaletę, że nie
zawiedzie
Zauważ, że jest to domyślnie rekurencyjne. Jeśli chcesz zastosować swoje polecenie tylko na najwyższym poziomie, możesz użyć -maxdepth findargumentu.
Kris Harper
0

To NIE jest symbol wieloznaczny, więc przepraszam za brak odpowiedzi, jednak ...
ls -al |grep ^d | awk '{print$NF}'wyświetli wszystkie katalogi w bieżącym katalogu, od Ciebie zależy, czy chcesz je przetworzyć .i ..usunąć.

echo $(ls -al |grep ^d | awk '{print$NF}') sprawia, że ​​zachowuje się jak symbol wieloznaczny

bsd
źródło
To się zepsuje, jeśli twoje pliki mają wiodące lub końcowe białe znaki lub znaki nowej linii.
Chris Down,