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.
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Skrip ditautkan oleh user23538, harap Anda tidak keberatan.
Saya sudah mencobanya dan berfungsi dengan baik. Harap perhatikan bahwa jika Anda menggunakan. sebagai argumen path (jalankan di direktori yang sama di mana skrip berada), itu sebenarnya mengubah skrip hak akses file skrip sendiri ke 644, jadi letakkan di direktori di atas.
sumber
Saya menulis sebuah skrip yang pada dasarnya melakukan hal di atas tetapi juga memberikan sedikit fleksibilitas untuk opsi baris perintah (direktori dan / atau izin file, atau mengecualikan keduanya secara otomatis me-reset semuanya ke 755-644). Itu juga memeriksa beberapa skenario kesalahan.
http://bigfloppydonkeydisk.blogspot.com.au/2012/09/recursively-chmod-only-files-or.html
sumber