[tanya-jawab] chmod seluruh isi folder

By human

Diambil dari http://www.mail-archive.com/tanya-jawab@linux.or.id/msg61144.html

>
> find . -type f -print0 | xargs -0 chmod 644
> find . -type d -print0 | xargs -0 chmod 755
>

saya biasanya lgs dijadiin satu di find itu sendiri dg -exec.

find . -type -f -exec chmod 644 {} \;
find . -type -d -exec chmod 755 {} \;

ngomong2 bedanya apa ya antara pakai -exec lgs dan di-pipe ke xargs
untuk kasus ini?


Kalo saya gak salah, gini: kalo pake -exec maka perintahnya akan
dijalankan sebanyak matchnya, kalo match 1000 files ya akan diexec
1000 kali. Sedangkan kalo pake xargs commandnya dijalankan cuma
seperlunya (tergantung batas command line length, dan panjang
argumentsnya, kalo udah lebih displit), tapi perintahnya harus
menerima nama2 file sebagai command line arguments.

Ilustrasinya kalo pake -exec:
chmod 644 file1
chmod 644 file2
chmod 644 file3
…dst.

Kalo pake xargs:
chmod 644 file1 file2 file3 …dst.

Dengan kata lain, buat kita 99% of the times gak ada bedanya. Kecuali
kalo command yg dijalankan itu bisa secara signifikan jauh lebih
efisien kalo dijalankan sekali dg banyak arguments dibandingkan kalo
dijalankan berulang2 utk masing2 argumen. Biasanya command yg
overheadnya gede, mungkin download dr network atau FTP yg mesti
connect dulu.

Ronny
——-

kalau directory isinya banyak banget, melakukan dua kali find
menyebabkan dua kali readdir(). menambahkan penjelasan mas ronny,
tinggal dikira-kira sendiri mana yang lebih menguntungkan, menghemat
readdir() atau menghemat exec():

find \( -type d -exec chmod 755 {} \; \) \
-or \
\( -type f -exec chmod 644 {} \; \)

penggunaan xargs untuk kasus semacam ini akan bermanfaat kalau:
– program bisa menerima multiple argument (harus)
– program tidak exec foo untuk tiap argumen

Salam,

P.Y. Adi Prasaja

1 Comment

(Required)
(Required, will not be published)