PDA

View Full Version : Need help for writing shell script


erez
24th May 2006, 16:48
I need some help in writing a shell script, it basically need to delete all my older files , the file name structure is like that :

song100000732200506114828.3gp
song100000732200506124528.3gp
song100000732200506214528.3gp
.....................
.....

· song – constant prefix.
· 100000732 – 9 digits unique key [per msisdn]
· 200506114528 – time stamp [DDMMYYHHMISS format]

The unique key is the same for each play list of specific msisdn.
The only thing that changes is the timestamp.


so i need for each unique key (there are more then one) the news file will remain


Can anyone help me?

thanks

EvanCarroll
11th June 2006, 10:40
I need some help in writing a shell script, it basically need to delete all my older files , the file name structure is like that :

song100000732200506114828.3gp
song100000732200506124528.3gp
song100000732200506214528.3gp
.....................
.....

· song – constant prefix.
· 100000732 – 9 digits unique key [per msisdn]
· 200506114528 – time stamp [DDMMYYHHMISS format]

The unique key is the same for each play list of specific msisdn.
The only thing that changes is the timestamp.


so i need for each unique key (there are more then one) the news file will remain


Can anyone help me?

thanks

Do you need it in shell? Or can it be scripted in a real language.

erez
15th June 2006, 18:11
i need it in a shell

g33k
16th June 2006, 06:51
>> so i need for each unique key (there are more then one) the news file will remain

I don't get what exactly you want to do..May be you could have been more clear !!

Well the following script extracts each field (key and date-time) from the file name..

#!/bin/bash
ext=".3gp" #put the file extension here

for f in *.3gp #repeats of for each file in the directory
do
#extract the filename without extension
base=`basename $f $ext`
echo $base

#extract the prefix
pref=`echo $base | cut -c 5-13 -`
echo $pref

#extract date and time
dtime=`echo $base | cut -c 14-25 -`
echo $dtime
done

flim
16th June 2006, 15:23
I need some help in writing a shell script, it basically need to delete all my older files , the file name structure is like that :

song100000732200506114828.3gp
song100000732200506124528.3gp
song100000732200506214528.3gp


I assume you want to remove unused stuff older than X days. Instead of checking the timestamp within the filenames you could just do something like this:

find /my/directory -name song*3gp -ctime 50 -print| rm -f

which would delete everything min 50 days old

You can test that it picks the right files with something like:
find /my/directory -name song*3gp -ctime 50 -print| ls -l

Cheers
flim