How to cd in shell scripting?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to cd in shell scripting?
# 1  
Old 01-04-2012
How to cd in shell scripting?

Hi guys,

Can anyone help me please, I have a code which will retain number of files maximum of 3 and will remove the one on top (using head -1 command). See code below:
Code:
#!/usr/bin/sh

num_of_files=`ls /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | wc -l`

if [ $num_of_files -gt 3 ]
then
remove=`ls -lrt /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | head -1 | awk '{print $8}' | rm \`xargs\``
$remove
fi

The code is located on the same directory /home/nsadm/USER_LOGS/. It functions well trying to give the output that I want, however when I already went out of the sub-directory USER_LOGS hitting the command cd which by default will bring me to /home/nsadm/, then I tried to run the script as /home/nsadm/USER_LOGS/remover.sh, the script didn't work.

I hope anyone can suggest what to do because I'm planning to place this script in CRON. By the way, I've also tried to run the script as root user because only root user can deploy entries in CRON, so as per login default directory is /root (for root user), then I ran the script /home/nsadm/USER_LOGS/remover.sh, again it didn't work.

Here's the error that I've got:
Code:
rm: cannot remove `UMB00_UserActivity_20120103_094606.log': No such file or directory


Regards,
rymnd_12345
# 2  
Old 01-04-2012
If you are just removing the top 1 file, then use this,

Code:
 
#!/usr/bin/sh
num_of_files=`ls /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | wc -l`

if [ $num_of_files -gt 3 ]
then
remove=`ls -lrt /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | head -1 | awk '{print $8}'`
rm $remove
fi

# 3  
Old 01-04-2012
alternate approach to remove first file ..
Code:
$ ls -1tr /home/user/USER_LOGS/*UserActivity* | nawk '/UMB00/{if(NR==1){print "rm "$0}}' | sh

# 4  
Old 01-04-2012
Hi Rksiva,

I've tried your suggestion but running like /home/nsadm/USER_LOGS/remover.sh won't remove the file, I've checked and verified that the files are still 4 and that the first file which is supposed to be deleted was not removed. Please see below:
Code:
nssh# /home/nsadm/USER_LOGS/remover.sh
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory

Hi jayan_jay,

I've also tried below but it's not working. Thanks..

Guys,
Maybe you can suggest another script either perl/shell which will serve as watcher to maintain only 3 files within the directory and it will be placed in the CRON so that everyday whenever a new file will be created, the 3-day old log will be removed. I appreciate even if I will not use my script, and will you use the one that you'll suggest.

br,
rymnd_12345
# 5  
Old 01-04-2012
Untested.

And, place this script in a different directory, because when number of files are counted using wc -l, the file containing below script too will be counted, right?

Code:
#!/usr/bin/sh
num_of_files=`ls /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | wc -l`
while [ $num_of_files -gt 3 ]
do
    rm -rf `ls -lrt /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | head -1 | awk '{print $8}'`
    num_of_files=`ls /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | wc -l`
done

# 6  
Old 01-04-2012
Hi balajesuri,

I've tried what you've suggested but still it's not functioning Smilie
Please see below:
Code:
nssh# /home/user/remover.sh
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
..................................................................................................................
..................................................................................................................

Note that this is already under the directory /home/user/ and not /home/user/USER_LOGS/ anymore.

BTW, Can you suggest a watcher script that will perform same function? or maybe deleting/removing files that are already 3-day old? Let's say I have particular directory handling all the files (e.g /home/nsadm/USER_LOGS/), then the script will watch this directory and limit the files for today, yesterday and the other day (3 files).

Please advise,
rymnd_12345
# 7  
Old 01-04-2012
If you want to remove already 3 days old file, then complete the task with find command itself ..
Code:
$ find /home/nsadm/USER_LOGS -name "UMB00_UserActivity*" -type f -mtime +3 -exec rm {} \;

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Shell script to read lines in a text file and filter user data Shell Programming and Scripting

sxsaaas (3 Replies)
Discussion started by: VikrantD
3 Replies

2. Shell Programming and Scripting

help me in Shell Scripting

Hi there please have a look at the code..i want to create Using a named pipe. Run a find in the background starting in the working directory While this is happening wait for input from the user to ask him which file to find. If the user does not enter any data in 10 seconds ask the user again.... (1 Reply)
Discussion started by: kattak1511
1 Replies

3. Shell Programming and Scripting

Shell scripting

Hi, if in a network there are lots of PCs connected with either windows or linux as operating system.Then what will be the shell script for the same and also if the PC has linux in it then we have to find if it is occupied or unoccupied. If the PC has windows in it then we have to find if it is... (6 Replies)
Discussion started by: akansha singh
6 Replies

4. UNIX for Dummies Questions & Answers

Shell Scripting

Hey I have a data in the file named as outputFile.txt. The data is in the format 123456,12345678912345,400,09/09/09,INACTIVE. I want this output without commas ie 12345612345678912345400090909INACTIVE. Please tell me what to do and clear explain all the terms, as I am new to it. (6 Replies)
Discussion started by: sampandey31
6 Replies

5. Web Development

Perl scripting or shell scripting?

i am going to study any one of the scripting languages mentioned above(shell 0r perl scripting) . Which is having more scope for a fresher? (1 Reply)
Discussion started by: Anna Hussie
1 Replies

6. What is on Your Mind?

Shell Scripting vs Perl scripting

Gents, I have been working in a Solaris/Unix environment for about 9 months. I took some linux classses online before getting the job. But, I am not very good at scripting. I want to learn how to script. Do you think that I should start with Shell scripting or Perl? I wanted to continue with... (2 Replies)
Discussion started by: Pouchie1
2 Replies

7. Android

Android Scripting Environment: Shell Scripting and Android

I just upgraded to Android 2.2 from 2.1. The GPS issue that was troublesome in 2.1 seems to have been fixed. Some of web browsing seems faster, but it could just be my connection is better today ;) Flash works in some browsers but not very good and it is too slow for Flash apps designed for... (0 Replies)
Discussion started by: Neo
0 Replies

8. What is on Your Mind?

Shell scripting vs Perl scripting

Hi all, I would like to start developping some good scripting skills. Do you think it would be best to start with shell scripting or Perl? I already got a fundation, really basics, in perl. but I am wondering what would be best to be good at first. Can you please help me determine which one to... (14 Replies)
Discussion started by: Pouchie1
14 Replies

9. Shell Programming and Scripting

Call Shell scripting from Perl Scripting.

Hi How to call a shell scripting through a Perl scripting? Actually I need some value from Shell scripting and passes in the Perl scripting. So how can i do this? (2 Replies)
Discussion started by: anupdas
2 Replies

10. Shell Programming and Scripting

difference between AIX shell scripting and Unix shell scripting.

please give the difference between AIX shell scripting and Unix shell scripting. (2 Replies)
Discussion started by: haroonec
2 Replies
Login or Register to Ask a Question