Bagaimana cara menerapkan direktori chmod secara rekursif tanpa mempengaruhi file?

18

Setelah saya mendaftar chmod -Rke direktori, izin diubah untuk semua yang ada di dalamnya (file dan direktori). Bagaimana saya bisa menambahkan xizin eksekusi / pencarian ( ) ke direktori tanpa mengubah file?

Ivan
sumber

Jawaban:

13

Anda dapat menggunakan find .

find ./ -type d -execdir chmod 750 {} +

Di mana 750 adalah mode yang ingin Anda terapkan dan "./" adalah direktori yang akan Anda cari secara rekursif.

EDIT : Terima kasih kepada @Gilles dan temukan (1) , saya telah merevisi ini untuk keamanan dan kinerja tambahan.

ewindisch
sumber
@Gilles Terima kasih, tidak terlalu sering saya mempelajari sesuatu yang baru tentang alat Unix :-) Itu luar biasa. Juga, sekarang membaca dokumentasi find , kita harus menggunakan -execdir sebagai gantinya.
ewindisch
7

Dalam kasus khusus ini Anda dapat menggunakan Xalih-alih xyang hanya menambahkan bit ke direktori atau file yang sudah memiliki bit yang dapat dieksekusi ditetapkan untuk beberapa pengguna (yaitu chmod -R +X my_dir).

Secara umum (misalnya jika Anda ingin membuat semua direktori bisa dibaca tanpa mempengaruhi file), kamu bisa menggunakan finddengan -type datau jika Anda menggunakan zsh (atau pesta 4 dengan shopt -s globstar) yang **/gumpal (keduanya tanpa melewati -Rbendera untuk chmod).

sepp2k
sumber
@Gilles: Poin bagus, saya telah menambahkan itu ke jawabannya.
sepp2k
1
"gunakan X daripada x yang hanya menambahkan bit ke direktori atau file yang sudah memiliki bit yang dapat dieksekusi untuk beberapa pengguna" - Terima kasih! Saya sangat merindukan hal ini!
Ivan