Got stuck

Laura Eaves leaves1 at carolina.rr.com
Sat Dec 30 08:35:59 EST 2006


Hi there -- did you try the find command with a few tweaks?:
To translate the files, try this ugly and untested line of code:

find topdir -type f -exec "{ bd=`basedir '{}'`; bf=`basename '{}'`; cd $bd; 
mv $bf `echo $bf|sed -e 's/-/_/g'` }" -print

Now as for the directories, I suppose you could use the same strategy with 
the following modification to be sure the deepest nested directories are 
translated first:

find topdir -depth -type d -print | sort -r >tempfile
for $D in `cat $tempfile`; do
    bd=`basedir $D`; bf=`basename$D`; cd $bd
    mv $bf `echo $bf | sed -e 's/-/_/g'`
done


As I said, this is untested, but it is intended to avoid accidental 
translation of a directory too soon in the process.

Perhaps the first and second find commands could be merged into one script:

find topdir -depth -print | sort -r >tempfile

and then use the for loop on all files regardless of whether they are plain 
files or directories. This would also take in special files like FIFO's or 
symbolic links or whatever.

Anyway, have fun and happy hacking.
--le

----- Original Message ----- 
From: "Pawel Loba" <pawel.loba at gmail.com>
To: "Speakup is a screen review system for Linux." <speakup at braille.uwo.ca>
Sent: Saturday, December 30, 2006 7:40 AM
Subject: Got stuck


Hello all.
I need to rename a number of directories (in the range of 1000) and all of
the mp3 files included in this directories (over 20000). What I want to
achieve
is to replace all of the dashes with underline sign.
Some time ago I found a script to rename files this way within a given
directory which looks as follows:

for i in *.mp3;
do
mv "$i" `echo $i | tr "-" "_"`;
done

This script works very well within a given directory but doesn't want to
work from the top directory witch actually includes this nearly 1000
subdirectories.
As an example, I'm getting somthing like this:
mv: cannot move `./Kolakowski-Leszek-Klucz-niebieski/01-klucz-niebieski.mp3'
to `./Kolakowski_Leszek_Klucz_niebieski/01_klucz_niebieski.mp3': no such
file
or directory

It was suggested to me to replace *.mp3 with `find . -name '*.mp3'`
But unfortunately, it did not work.
I'm not a programmer just a user who tries to be smart, so, please be
patient and treat me like a newbie. :-)

hope all of you on here have a great new year.
Thanks,
Pawel.


_______________________________________________
Speakup mailing list
Speakup at braille.uwo.ca
http://speech.braille.uwo.ca/mailman/listinfo/speakup





More information about the Speakup mailing list