find command Help!!


 
Thread Tools Search this Thread
Operating Systems Solaris find command Help!!
# 1  
Old 09-04-2007
find command Help!!

I am using below command in shell script. All parameters are getting replaced correctly but files are not getting deleted. Please help :

Variables :-

FILE_LOCATION = /var/core
FILE_NAME=core*
OLDER_THAN=0

find ${FILE_LOCATION}/ \( -name ${FILE_NAME} -a -mtime ${OLDER_THAN} \) -exec rm {} \;
# 2  
Old 09-04-2007
i wrote you script exactly as you did and it worked on ym system. I ran it as root and changed the ownership but it works fine. i did chmod 700 test chown rootSmiliether test. then i created a /var/core dir. then touched multiple files with numbers in them i ran it and they were gone.
# 3  
Old 08-24-2008
When I run my script in debug mode I see that \ is not getting executed as part of command. It is being treated as escape character.

find ${DATABASE_PARAM_PATH} -mtime +${RETENTION_PERIOD} -exec rm -rf {} \;

Command execution output in debug mode :

find /pgmfgfpws/app/oracle/mfgfpwsdb/10.2.0/admin/mfgfpws_webisstg70/bdump -mtime +1 -exec ls -ltr {} ;

Backslash is missing. Without blackslash if bdump directory is empty after deleting all files which meet deletion criterion, find command deletes bdump directory as well. I don't want bdump directory to be deleted even though it is empty.

Any help is greatly appreciated.
# 4  
Old 08-24-2008
Add -type f to only delete files and not directories matching the criteria.

I don't think the lack of a backslash is the explanation. If you mean the one before the ; it's required to pass through a literal semicolon; you could equivalently put the semicolon in single quotes, for example, to prevent the shell from interpreting it as a command separator. What you see with set -v or equivalent is what actually gets executed after quoting and backslash substitutions have been processed by the shell.

I would assume that the reason the directory gets removed is that it meets the criteria you have, plain and simple. Its modification time will be updated when you delete files in it so specifying -depthfirst if your find has that might also be a workaround.

ls is not a good test case because it's hard to see when it's listing files in the directory vs when it's listing the whole directory. Adding the -d option would help disambiguate, or you could simply use echo for debugging.

Last edited by era; 08-24-2008 at 02:49 PM.. Reason: -depthfirst and echo suggestions
# 5  
Old 08-24-2008
Thanks Era for elaborated explaination. Your updates are always insightful and help me understand unix command better.
# 6  
Old 08-25-2008
Why cant you shorten it this way?
CORE_FILE="/var/core/core*"
OLD=0
find {CORE_FILE} -mtime ${OLD} -exec rm {} \;
# 7  
Old 08-25-2008
Quote:
Originally Posted by incredible
Why cant you shorten it this way?
CORE_FILE="/var/core/core*"
OLD=0
find {CORE_FILE} -mtime ${OLD} -exec rm {} \;
Wouldn't be very wise to do it like this.

The wildcard (*) will be interpreted by the shell.

Suppose there are a few hunderd core files present, the effective find command will be

find /var/core/core0001 /var/core/core0002 /var/core/core003 ............. -mtime 0 -exec rm {} \;

This will result in an enormous CPU load.

Never use wildcards in a find command unless you either escape (\) them or put them withing single quotes (')

In the reply of "era" are the proper directions to handle something like this.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

Is it possible to find the seek rate of the find command in Solaris?

Hello, I am running some performance based tests on Solaris, and I was wondering how fast the "seeking" rate of Solaris is, or how fast Solaris can get information about files with the "find" command. Does anyone know what 'find' command I could run to traverse through my system to see the rate... (1 Reply)
Discussion started by: bstring
1 Replies

2. Shell Programming and Scripting

Find multiple string in one file using find command

Hi, I want find multiple string in one file using find coomand. And keeping it in one variable.grep is not working. (5 Replies)
Discussion started by: vivek1489
5 Replies

3. Shell Programming and Scripting

How to use grep & find command to find references to a particular file

Hi all , I'm new to unix I have a checked project , there exists a file called xxx.config . now my task is to find all the files in the checked out project which references to this xxx.config file. how do i use grep or find command . (2 Replies)
Discussion started by: Gangam
2 Replies

4. Shell Programming and Scripting

Find, regular expression, anyway to simplify this find command?

Hello everyone, first post here, trying to learn scripting on my own and this forum as been really helpful so far. I made few little scripts working great but I m facing some problems with RE. I have a bunch of files in many subdirectories called *001.ext *002.ext OR simple *.ext or *01.ext... (7 Replies)
Discussion started by: Sekullos
7 Replies

5. Shell Programming and Scripting

what is the find command to find exact dir from the root

I want to find a dir called STOP from the root.so what is the find command. Thanks & Regards Rajkumar (1 Reply)
Discussion started by: rajkumar_g
1 Replies

6. Linux

Simplified find command to find multiple file types

Hi, I'm using the following command to find the multiple requierd file types and its working fine find . -name "*.pl" -o -name "*.pm" -o -name "*.sql" -o -name "*.so" -o -name "*.sh" -o -name "*.java" -o -name "*.class" -o -name "*.jar" -o -name "*.gz" -o -name "*.Z" -type f Though... (2 Replies)
Discussion started by: vickramshetty
2 Replies

7. Shell Programming and Scripting

find: No match due to find command being argument

I am using csh and getting the error "find: No match." but I cannot figure out why. What I am trying to do is set the find command to a variable and then execute the variable as a command. I ran it through a debugger and it looks like $FIND is getting set but the find command can not actually be... (2 Replies)
Discussion started by: mst3k4l
2 Replies

8. UNIX for Dummies Questions & Answers

how to find a file named vijay in a directory using find command

I need to find whether there is a file named vijay is there or not in folder named "opt" .I tried "ls *|grep vijay" but it showed permission problem. so i need to use find command (6 Replies)
Discussion started by: amirthraj_12
6 Replies

9. Shell Programming and Scripting

Little bit weired : Find files in UNIX w/o using find or where command

Yes , I have to find a file in unix without using any find or where commands.Any pointers for the same would be very helpful as i am beginner in shell scritping and need a solution for the same. Thanks in advance. Regards Jatin Jain (10 Replies)
Discussion started by: jatin.jain
10 Replies

10. Shell Programming and Scripting

command find returned bash: /usr/bin/find: Argument list too long

Hello, I create a file touch 1201093003 fichcomp and inside a repertory (which hava a lot of files) I want to list all files created before this file : find *.* \! -maxdepth 1 - newer fichcomp but this command returned bash: /usr/bin/find: Argument list too long but i make a filter all... (1 Reply)
Discussion started by: yacsil
1 Replies
Login or Register to Ask a Question