> On Monday 19 July 2004 06:37, Dion wrote:
>
>> > find /data -print0 | xargs lower.sh
>>
>> I don't think that works.
>>
>> [EMAIL PROTECTED] rename]# find teztdir/ -print0 | xargs -0 ./lower.sh
>> mv -v -i teztdir/ teztdir/
>> mv: cannot move `teztdir/' to a subdirectory of itself,
>> `teztdir/teztdir'
>> mv -v -i teztdir/AJxWI1 teztdir/ajxwi1
>
>
> gimana kalau direktori diproses lebih dahulu, baru kemudian file:
> find /data -type d -print0 | xargs lower.sh
> find /data -type f -print0 | xargs lower.sh
Sama aja dong
Kalau direktorinya bercabang cabang seperti contoh di bawah ini
[EMAIL PROTECTED] work]# find BZJED/ -print0 | xargs -0 ../lower.sh
mv -v -i BZJED/ bzjed/
`BZJED/' -> `bzjed'
mv -v -i BZJED/DGJEW bzjed/dgjew
mv: cannot stat `BZJED/DGJEW': No such file or directory
mv -v -i BZJED/DGJEW/UALVP bzjed/dgjew/ualvp
mv: cannot stat `BZJED/DGJEW/UALVP': No such file or directory
mv -v -i BZJED/DGJEW/UALVP/SISGF bzjed/dgjew/ualvp/sisgf
mv: cannot stat `BZJED/DGJEW/UALVP/SISGF': No such file or directory
mv -v -i BZJED/DGJEW/UALVP/BEUXY bzjed/dgjew/ualvp/beuxy
mv: cannot stat `BZJED/DGJEW/UALVP/BEUXY': No such file or directory
mv -v -i BZJED/DGJEW/UALVP/VZCGY bzjed/dgjew/ualvp/vzcgy
mv: cannot stat `BZJED/DGJEW/UALVP/VZCGY': No such file or directory
mv -v -i BZJED/DGJEW/UALVP/YHRVQ bzjed/dgjew/ualvp/yhrvq
mv: cannot stat `BZJED/DGJEW/UALVP/YHRVQ': No such file or directory
mv -v -i BZJED/DGJEW/UALVP/PQSLB bzjed/dgjew/ualvp/pqslb
mv: cannot stat `BZJED/DGJEW/UALVP/PQSLB': No such file or directory
Approach si penanya pertama kali saya rasa sudah benar.
Untuk tiap direktori masuk ke directori itu dan lower case semua dan
seterusnya.
Kalau dengan find(1) berarti yang di dapat adalah "snapshot" pada saat
itu, begitu kita ganti ganti dengan mv(1), "snapshot" itu sudah no longer
valid.
Anyway, ini solusi saya, yang agak kontradiksi dengan saya sendiri karena
pakai find(1) juga. hehehe.
[EMAIL PROTECTED] work]# find ./ -depth -exec ../lowercase.sh '{}' \;
mv -v -i ./BZJED/DGJEW/UALVP/SISGF ./BZJED/DGJEW/UALVP/sisgf
`./BZJED/DGJEW/UALVP/SISGF' -> `./BZJED/DGJEW/UALVP/sisgf'
mv -v -i ./BZJED/DGJEW/UALVP/BEUXY ./BZJED/DGJEW/UALVP/beuxy
`./BZJED/DGJEW/UALVP/BEUXY' -> `./BZJED/DGJEW/UALVP/beuxy'
mv -v -i ./BZJED/DGJEW/UALVP/VZCGY ./BZJED/DGJEW/UALVP/vzcgy
`./BZJED/DGJEW/UALVP/VZCGY' -> `./BZJED/DGJEW/UALVP/vzcgy'
mv -v -i ./BZJED/DGJEW/UALVP/YHRVQ ./BZJED/DGJEW/UALVP/yhrvq
`./BZJED/DGJEW/UALVP/YHRVQ' -> `./BZJED/DGJEW/UALVP/yhrvq'
mv -v -i ./BZJED/DGJEW/UALVP/PQSLB ./BZJED/DGJEW/UALVP/pqslb
`./BZJED/DGJEW/UALVP/PQSLB' -> `./BZJED/DGJEW/UALVP/pqslb'
mv -v -i ./BZJED/DGJEW/UALVP ./BZJED/DGJEW/ualvp
..........
mv -v -i ./BZJED/XVTPU ./BZJED/xvtpu
`./BZJED/XVTPU' -> `./BZJED/xvtpu'
mv -v -i ./BZJED/WUHAAAAAA SPASI SPASI ./BZJED/wuhaaaaaa spasi spasi
`./BZJED/WUHAAAAAA SPASI SPASI' -> `./BZJED/wuhaaaaaa spasi spasi'
mv -v -i ./BZJED ./bzjed
`./BZJED' -> `./bzjed'
mv -v -i ./ ./
mv: `./' and `./.' are the same file
[EMAIL PROTECTED] work]#
lowercase.sh
--snip--
#!/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="`/root/lowercase.pl "$@"`"
echo mv ${mv_opts} "$filename" "${new_name}"
mv ${mv_opts} "$filename" "${new_name}"
done
--snap--
lowercase.pl, yang ini ada BUG nya, ngga ngecek argc, mungkin ada BUG lain
juga
--snip--
#!/usr/bin/perl
$filename=$ARGV[0];
if ($filename =~ /\/$/) {
$filename =~ s/(.*)\/(.+)\/$/sprintf("%s\/%s\/",$1,lc($2))/e;
} elsif ($filename =~ /\//) {
$filename =~ s/(.*)\/(.+)$/sprintf("%s\/%s",$1,lc($2))/e;
} else {
$filename =~ tr/[A-Z]/[a-z]/;
}
print "$filename";
--snap--
--
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis.php