Find command uisng -prune or -only


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Find command uisng -prune or -only
# 1  
Old 02-22-2008
Find command uisng -prune or -only

I've run into a brick wall using the -prune command to avoid walking sub-directories. Does any one have any suggestions on how I avoid walking the sub-directories when finding files in the following example?

I want to find all files older than 30 days in the dir1 directory and only the dir1 directory.

Directory structure looks something like this, for example :
/dir1/dir2/dir3.....

Here's the find command that I'm using right now:

find /dir1 -prune -o -name '*' -mtime +30 -print > filelist.lst

However, I keep getting output for files located in the dir2 and dir3 directories as well. Any thoughts on how to keep this find command from walking the sub-directories?
# 2  
Old 02-22-2008
This has been answered many times. Here you go.

https://www.unix.com/unix-advanced-ex...html#post27753
# 3  
Old 02-22-2008
Tried that already

i did see that solution but it does not work in my case. Here's what I had using that solution :

find /dir1 \( ! -name /dir1 -prune \) -name '*' -mtime +30 -print > filelist.lst

However, when I check the filelist.lst file it is empty and shouldn't be because there are files in /dir1 that are older than 30 days.
# 4  
Old 02-22-2008
It seems to work for me on Solaris.

Code:
bash-3.00# pwd
/dir1
bash-3.00# ls -l
total 4
drwxr-xr-x   2 root     root         512 Feb 22 13:08 dir2/
-rw-r--r--   1 root     root           6 Jan  1 00:00 file1
bash-3.00# ls -l dir2/
total 0
-rw-r--r--   1 root     root           0 Jan  1 00:00 file2
bash-3.00# find . \( ! -name . -prune \) -mtime +30
./file1

# 5  
Old 02-22-2008
Try adding the -name '*' after the -prune portion of the command and see if you get any different results.
# 6  
Old 02-22-2008
It's still working. But why are you passing that name parameter if your looking for a wildcard anyway? find will do that by default.

Code:
bash-3.00# find . \( ! -name . -prune \) -name '*' -mtime +30
./file1

# 7  
Old 02-22-2008
That's wierd because it won't work on HP-UX 11i. The -name '*' would be a passin value from user input. It could be '*' or '*TEST' or any other wildcarded search parameter. They can also input whether or not they want to search sub-directories for the input filename(s). I'm setting a flag for the sub-directory search to determine the appropriate find command structure to use based on their inputs. So, if they want to search sub-directories of the initial search path there is no issue because I don't need to use the -prune. However, if they don't want to search sub-directories underneath the initial search path AND they enter an '*" for the filename(s) to search for I run into this issue.

Based on your results this may well be a HP-UX issue. Although I'm not positive of that at this point.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Prune Option for Find Command on AIX

I need to delete all files from the working directory and its sub directories using the find command, for that I am using -prune option but some how I am having a syntax issue. I have tried the below, please help me correct the syntax find . -name \* -type f -exec rm -f {} \; >> Works but... (4 Replies)
Discussion started by: rosebud123
4 Replies

2. UNIX for Dummies Questions & Answers

AIX find command using prune option

Hi, I am trying to find some files in a directory and then remove/list them if they are 30 days old. I also have 2 directories in that directory which I need to skip. Can someone please tell me what is the correct syntax? find /developer/. -name "lost+found" "projects" -prune -o -type f... (2 Replies)
Discussion started by: tkhan9
2 Replies

3. Shell Programming and Scripting

help with find command and prune option

Hi I have a directory say mydir and inside it there are many files and subdirectories and also a directory called lost+found owned by root user I want to print all files directories and subdirectorres from my directory using find command except lost+found If i do find . \( -name... (3 Replies)
Discussion started by: xiamin
3 Replies

4. UNIX for Dummies Questions & Answers

help me out with find command , -prune option

Hi , Kindly help me out .:) i want to find only the file t4 in directory t3. i am in dir t . the tree is as follows. if i give, find . o/p is . ./t4 ./t1 ./t1/t2 ./t1/t2/t3 ./t1/t2/t3/t4 ./t1/t2/t4 ./t1/t4 directories are like t/t1/t2/t3 and each directory has file t4. my... (7 Replies)
Discussion started by: bhuvaneshlal
7 Replies

5. UNIX for Dummies Questions & Answers

use of xargs and prune piping with find command.

Can anyone interpret and tell me the way the below command works? find * -name "*${msgType}" -mtime +${archiveDays} -prune -type f -print 2>/dev/null | xargs rm -f 2> /dev/null Please tell me the usage of prune and xargs in the above command? Looking forward your reply. Thanks in... (1 Reply)
Discussion started by: venkatesht
1 Replies

6. UNIX for Dummies Questions & Answers

Using prune with find command

Hi, I am using a find command like below in my script: find /outfiles -type f -name cat -o -name vi -o -name grep 2>/dev/null Which will search for files like "cat" , "vi" or "grep" in the "/outfiles" and subdirectories. I want to ignore a particular subdirectory from the search. I... (4 Replies)
Discussion started by: deepakgang
4 Replies

7. UNIX for Dummies Questions & Answers

find command with prune help

I have a directory named https-abcd Under that I have some directories, files and links. One of those directories is with name logs and the logs directory has lot of files in it. I need to tar the whole https-abcd directory excluding the logs directory only, I should get all the links, files and... (2 Replies)
Discussion started by: venu_nbk
2 Replies

8. UNIX for Advanced & Expert Users

Find command with prune and exec

Hi, I'm using the following command to get a list of files on the system. find /releases -type f -exec ls -l > /home/sebarry/list.txt '{}' \; however, its searching a directory I don't want it to search so I know I have to use prune but I don't seem to be able to get prune and exec to work... (1 Reply)
Discussion started by: Sebarry
1 Replies

9. UNIX for Dummies Questions & Answers

Use -prune with find command on AIX

I am trying to get a list of top level directories below the search path but I don't want to descend subdirectories. The find command listed below returns me the list I want but it also returns subdirectories. I can't seem to get the -prune option to work the way I want. How would I modify the... (5 Replies)
Discussion started by: FuzzySlippers
5 Replies
Login or Register to Ask a Question