Was ist ein Platzhalter, um alle Verzeichnisse in einem Verzeichnis auszuwählen

13

Ich möchte Sticky-Bit für alle Verzeichnisse in einem Verzeichnis mit Ausnahme von Dateien festlegen. Gibt es dafür einen Joker?

#sudo chmod g+s /var/www/<WILD_CARD_FOR_ALL_DIRECTORIES>
Necktwi
quelle

Antworten:

24

Verwenden Sie */diese Option , um nur Verzeichnisse abzugleichen.

chmod g+s /var/www/*/

Um alle Verzeichnisse und Unterverzeichnisse abzugleichen, verwenden Sie **/*/(sofern Sie globstarin Bash aktiviert haben ):

shopt -s globstar
chmod g+s /var/www/**/*/
Dogbane
quelle
2
Funktioniert gut, bricht jedoch ab, sobald die erweiterte Befehlszeilenlänge die maximale Befehlszeilenlänge überschreitet. -> cyberciti.biz/faq/argument-list-too-long-error-solution
Bonsi Scott
1
Ja, das weiß ich. Das OP bat jedoch um eine "Wildcard".
Dogbane
Ja! Ich bat um Platzhalter, thanq.
Necktwi
Ich weiß, dass er nach einer Wildcard-Lösung gefragt hat. Ich habe nur darauf hingewiesen, dass es unter Umständen scheitern würde. Abgesehen davon, keine Kritik hier zu sehen (ich habe kommentiert noch nicht bewertet, weil es eine funktionierende Lösung für die meisten Fälle ist) ^^
Bonsi Scott
13

Sie können find verwenden, siehe Beispiel unten

find /var/www/ -type d -exec chmod g+s {} \;
Rahul Patil
quelle
3
Das ist zwar nett, aber kein Joker - aber es hat den Vorteil, dass es nicht an vielen Verzeichnissen scheitert
Bonsi Scott
Beachten Sie, dass dies standardmäßig rekursiv ist. Wenn Sie möchten, dass Ihr Befehl nur auf die oberste Ebene angewendet wird, können Sie das -maxdepth findArgument verwenden.
Kris Harper
0

Dies ist kein Platzhalter, so dass ich für eine Nicht-Antwort entschuldigen, aber ...
ls -al |grep ^d | awk '{print$NF}'alle Verzeichnisse im aktuellen Verzeichnis auflisten, dann ist es an Ihnen zu entscheiden , ob Sie bearbeiten möchten .und ..oder sie abzustreifen.

echo $(ls -al |grep ^d | awk '{print$NF}') Tut macht es wie ein Platzhalter verhalten

bsd
quelle
Dies wird unterbrochen, wenn Ihre Dateien führende oder nachfolgende Leerzeichen oder Zeilenumbrüche enthalten.
Chris Down