apa kartu liar untuk memilih semua direktori dalam direktori

13

saya ingin mengatur bit lengket untuk semua direktori dalam direktori tidak termasuk file. apakah ada kartu liar untuk melakukan ini?

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

Jawaban:

24

Gunakan */untuk mencocokkan hanya direktori.

chmod g+s /var/www/*/

Untuk mencocokkan semua direktori dan penggunaan subdirektori **/*/(asalkan Anda telah globstarmengaktifkan bash):

shopt -s globstar
chmod g+s /var/www/**/*/
dogbane
sumber
2
Berfungsi dengan baik, tetapi akan pecah segera setelah panjang baris perintah yang diperluas melebihi batas panjang baris perintah. -> cyberciti.biz/faq/argument-list-too-long-error-solution
Bonsi Scott
1
ya, saya sangat sadar akan hal itu. Namun, OP meminta "wildcard".
dogbane
ya! saya meminta wildcard, thanq.
Necktwi
saya tahu bahwa dia meminta solusi wildcard. Saya hanya menunjukkan bahwa itu akan gagal dalam beberapa keadaan. Selain itu, tidak ada kritikan yang bisa dilihat di sini (saya sudah berkomentar namun dibalik, karena ini adalah solusi yang bagus untuk sebagian besar kasus) ^^
Bonsi Scott
13

Anda dapat menggunakan find, lihat contoh di bawah ini

find /var/www/ -type d -exec chmod g+s {} \;
Rahul Patil
sumber
3
Ini bagus, namun bukan wildcard - tetapi memiliki keuntungan karena tidak gagal karena banyak direktori
Bonsi Scott
Perhatikan bahwa ini bersifat rekursif secara default. Jika Anda hanya ingin perintah Anda diterapkan ke tingkat atas, Anda dapat menggunakan -maxdepth findargumen.
Kris Harper
0

Ini BUKAN wildcard, jadi saya minta maaf atas tidak dijawab, namun ...
ls -al |grep ^d | awk '{print$NF}'akan mencantumkan semua direktori dalam direktori saat ini, terserah Anda untuk memutuskan apakah Anda ingin memproses .dan ..atau menghapusnya.

echo $(ls -al |grep ^d | awk '{print$NF}') tidak membuatnya berperilaku seperti wildcard

bsd
sumber
Ini akan rusak jika file Anda memiliki spasi spasi, atau baris baru.
Chris Down