On Sat, Jul 10, 2004 at 02:11:08PM -0700, Black Chimera wrote:
> Salam semua...
> 
> Saya punya script untuk mengubah semua huruf file menjadi lower case..
> 
> #!/bin/sh
>   for i in *
>   do
>   j=`echo $i | tr '[A-Z]' '[a-z]'`
>   mv $i $j
> 
> ini disimpan dengan nama lower.
>   
> tapi ini tidak rekursif..
> Ada, tidak teman2 yang bisa modif..supaya jadi rekursi ke dalam sub
> direktori jadinya untuk merubah seluruh file jadi lowercase menjadi :
> 
> #lower /data
> 
> semua file pada subdirektori akan jadi lowercase....

Scriptnya terlalu specific, kurang generic. Akan lebih baik kalo
dibuat generic. Tujuannya? Supaya bisa digabung/dichain dg tools laen
yg sudah ada. Reusability.

#!/bin/sh
# Ganti isi mv_opts seperlunya. Baca 'man mv'.
mv_opts="-v -i"
# Biasakan pake quotes. Ada filename yg mengandung spasi.
for filename in "$@"; do
    new_name="`echo $filename | tr '[A-Z]' '[a-z]'`"
    mv ${mv_opts} "$filename" "${new_name}"
done

Simpan file tsb dg nama lower.sh, lalu panggilnya dg passing arguments
nama2 file yg mau diganti namanya, jadi misalnya kalo mau lower semua
file di dalam current directory instead of 'lower' anda jalanin
'lower.sh *'. Bisa lebih flexible lagi, misalnya anda mau cuma lower
yg nama filenya diawali dengan huruf X tinggal 'lower X*'.

Nah kalo sudah gini enak, tinggal digabung ama find dan xargs. Asumsi
lower.sh sudah ada di $PATH, kalo belum tinggal panggil dg absolute
path.

        find /data -print0 | xargs lower.sh

Beres.

Tinggal baca dokumentasi 'find' dan 'xargs'. Trust me, it's a
worthwhile investment.

Ronny

Attachment: pgpn8MnOobxGf.pgp
Description: PGP signature

Kirim email ke