Help with find command


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Help with find command
# 1  
Old 08-10-2011
Help with find command

Hello Gurus,

Please advise me with the below command on AIX.

I'm running this to list all the files of specific pattern such that they are sorted as per the time stamp. But I'm not able to achieve that with below command as it is not sorting the files as per time stamp

Code:
find / -name "*pattern*" -exec ls -ltr {} \;

Thanks for checking :-)
# 2  
Old 08-10-2011
I am not sure why are you using -exec with ls -ltr..You can directly use like,
Code:
find / -name "*pattern*"  | ls -ltr

# 3  
Old 08-10-2011
Help with find command

Hi sachinkl

Code:
find / -name "*pattern*" | ls -ltr

is listing all the files in reverse order of time stamp and
not the files matching specific pattern.

The reason for me choosing the find command is I want to delete the files which are older than specific time stamp. For some reason I'm not able to use mtime option because that files will be accessed such that it will change the time stamp.
# 4  
Old 08-10-2011
Quote:
Originally Posted by tenderfoot
Hello Gurus,

Please advise me with the below command on AIX.

I'm running this to list all the files of specific pattern such that they are sorted as per the time stamp. But I'm not able to achieve that with below command as it is not sorting the files as per time stamp

Code:
find / -name "*pattern*" -exec ls -ltr {} \;

Thanks for checking :-)
That's because find is exec'ing one ls per file that matches '*pattern'. There's nothing for it to sort since ls is given only one argument each time. The order you see is the order in which find found the files.

Any solution which depends on individual file names passed as command arguments is going to be limited by the system's exec syscall limits. If you're only dealing with a few thousand files or less, and if your find command supports the exec-+ syntax, you may be able to get by with the following:
Code:
Code:
find / -name '*pattern*' -exec ls -ltr {} +

Quote:
Originally Posted by sachinkl
I am not sure why are you using -exec with ls -ltr..You can directly use like,
Code:
find / -name "*pattern*"  | ls -ltr

No, you cannot. ls does not read arguments from standard input.

Quote:
Originally Posted by tenderfoot
The reason for me choosing the find command is I want to delete the files which are older than specific time stamp. For some reason I'm not able to use mtime option because that files will be accessed such that it will change the time stamp.
Perhaps I misunderstood, but simply accessing a file should not affect it's modification timestamp.

In any case, if for some reason -mtime isn't working for you, and if you have a file with a reference timestamp, you can use -newer.

Regards,
Alister

Last edited by alister; 08-10-2011 at 01:24 PM..
# 5  
Old 08-10-2011
i guess u need to use sort command further...
# 6  
Old 08-11-2011
Thanks so much Alister for detailed explanation and it is working.

Can you please explain me what that + is ? Not able to find clear explanation in man page
# 7  
Old 08-11-2011
In short, it tells find that instead of exec'ing once per matching pathname, it should collect as many matching pathnames as possible before each exec; in lieu of invoking a program with just a single pathname argument, it's invoked with many.

In your case the issue was semantics not performance, but when dealing with a large number of pathnames, exec-+ will yield a substantial performance gain over exec-; (a lot less fork/exec work to do).

For the detailed explanation, see the find(1) man page under the -exec section: Man Page for find (POSIX Section 1) - The UNIX and Linux Forums

Regards,
Alister
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