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>

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/**/*/

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 {} \;

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


To się zepsuje, jeśli twoje pliki mają wiodące lub końcowe białe znaki lub znaki nowej linii.
Chris Down,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.