Berikut skrip yang dapat Anda panggil dengan melewati mode sebagai argumen pertama dan satu atau lebih nama direktori sebagai argumen selanjutnya. Di Linux, jika Anda tidak memasukkan nama direktori apa pun, itu akan seolah-olah Anda lulus .
(direktori saat ini). Beri nama skrip ini rchmodf
, buat agar dapat dieksekusi ( chmod a+rx /path/to/rchmodf
) dan letakkan di suatu tempat di $PATH
.
#!/bin/sh
mode=$1; shift
find "$@" -type f -exec chmod "$mode" {} +
Penjelasan: mode=$1; shift
mengatur variabel mode
ke argumen pertama skrip dan menghapus argumen pertama dari daftar. "$@"
memperluas ke daftar semua argumen.
Jika suka, Anda bisa membuat skrip yang menerima mode direktori dan mode file.
#!/bin/sh
dir_mode=$1; shift
file_mode=$1; shift
find "$@" -type d -exec chmod "$dir_mode" {} + -o -type f -exec chmod "$file_mode" {} +
Perhatikan bahwa 744 bukan mode file yang berguna; 644 (dapat ditulis pengguna dan dapat dibaca dunia) dan 755 (juga dapat dieksekusi dunia) jauh lebih umum. Juga, mengubah setiap file di pohon menjadi executable atau tidak menjadi executable jarang berguna; Anda mungkin ingin memanggil skrip ini dengan argumen seperti +rX
(modal X
, untuk mengatur bit yang dapat dieksekusi hanya untuk direktori dan untuk file yang sudah dapat dieksekusi). Bahkan, X
modus simbolis mungkin apa yang Anda setelah dengan script ini: chmod -R +rX .
.
Dengan bash atau zsh, ada cara lain untuk bertindak secara rekursif tetapi hanya pada direktori. Untuk bash, Anda memerlukan versi 4 dan untuk menjalankannya shopt -s globstar
terlebih dahulu.
chmod a+rx **/*/
Dalam zsh, Anda dapat bertindak pada file hanya dengan suffixing (.)
: chmod a+r **/*(.)
.
Saya akan menyampaikan pertanyaan Nautilus.