Find Command Include Sub Directory


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find Command Include Sub Directory
# 1  
Old 02-11-2015
Find Command Include Sub Directory

This script writes the output files to FILES but I don't want to exclude all directories from ABC_CHQ and LYS_ADV, I want to include one sub directory name process which is under ABC_CHQ and LYS_ADV in the search. Right now its excluding everything from prune directories such as ABC_CHQ, LYS_ADV etc.

Please let me know how can I include only one sub directory which is under ABC_CHQ lets say.

Code:
FILES=`find /home/u10/payments -name "ABC_CHQ" -prune -o \
    -name "ABCD_CTRE" -prune -o -name "LYS_ADV" -prune -o -type f -mtime +$DAYS \
      -exec ls {} \;`

Moderator's Comments:
Mod Comment Please use code tags

Last edited by jim mcnamara; 02-11-2015 at 06:20 PM..
# 2  
Old 02-11-2015
Code:
FILES=`find /home/u10/payments/ABC_CHQ  -type f -mtime +$DAYS -exec ls {} \;`

Try that.

Also please note that -o and -a require ( ) example:

Code:
find . \( name abc -o -name foo \) -mtime +10

Your code probably did not do what you expected.
# 3  
Old 02-11-2015
Jim, code is working fine, tell me how to include one sub directory from the said directory.

Thanks
# 4  
Old 02-11-2015
Your description of what you're trying to do leaves some requirements ambiguous. With lots of guessing, the following might come close to what you're trying to do:
Code:
FILES=$(find /home/u10/payments \
	/home/u10/payments/ABC_CHQ/subdir1 \
	/home/u10/payments/LYS_ADV/subdir2 \
	\( -name ABC_CHQ -prune \) -o \
	\( -name ABCD_CTRE -prune \) -o \
	\( -name LYS_ADV -prune \) -o \
	-type f -print)

It will store a list of regular files in and under /home/u10/payments,/home/u10/payments/ABC_CHQ/subdir1, and /home/u10/payments/LYS_ADV/subdir2 while ignoring files in other subdirectories under /home/u10/payments/ABC_CHQ and /home/u10/payments/LYS_ADV, and all files under /home/u10/payments/ABCD_CTRE.
This User Gave Thanks to Don Cragun For This Post:
# 5  
Old 02-12-2015
Thanks a lot Don, Its working perfectly fine.
# 6  
Old 02-12-2015
Trivial, but '-print' or '-exec ls {}' are usually unnecessary, as 'find' prints file names unless you tell it you want something else.

It might be easier to make a clone tree of the dirs you *do* want, once, and search in it. A clone tree can be built up using either symlinks to dirs or identically named dirs containing links to files. If you use sym links for files or dirs, the '-follow' is needed to make 'find' traverse them.
# 7  
Old 02-12-2015
Quote:
Originally Posted by DGPickett
Trivial, but '-print' or '-exec ls {}' are usually unnecessary, as 'find' prints file names unless you tell it you want something else.

It might be easier to make a clone tree of the dirs you *do* want, once, and search in it. A clone tree can be built up using either symlinks to dirs or identically named dirs containing links to files. If you use sym links for files or dirs, the '-follow' is needed to make 'find' traverse them.
The -print is needed in this case because the directory names that have files under them pruned will be printed as part of the default case. Adding the explicit -print (or the MUCH less efficient and MUCH slower -exec ls {} \;) in the case where we want the pathnames printed will avoid printing those unwanted directory names.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How-To Exclude Directory in find command

How can i tweak the below find command to exclude directory/s -> "/tmp/logs" find . -type f \( ! -name "*.log*" ! -name "*.jar*" \) -printNote: -path option/argument does not work with the version of find that i have. bash-3.2$ uname -a SunOS mymac 5.10 Generic_150400-26 sun4v sparc sun4v (7 Replies)
Discussion started by: mohtashims
7 Replies

2. Shell Programming and Scripting

Find out directory where command is located

so i have a script that i do not want copies of that script to be roaming around. i want that script to be in only one location on the filesystem, and whoever wants to use it should just link to it. any idea on how to exit from a script if it is detected that the running version is a copy and... (5 Replies)
Discussion started by: SkySmart
5 Replies

3. Shell Programming and Scripting

How to include file pattern in find command?

Hi I've to remove the files which has the following file pattern in path /home/etc/logs fnm_HST_date1 fnm_hst_date1 fnm_HST_date2 I've used the following code to to remove the files having file names like "HST" . #!/usr/bin/ksh set -x file_path=/home/etc/logs file_nm=HST find... (2 Replies)
Discussion started by: smile689
2 Replies

4. Shell Programming and Scripting

Find command with ignore directory

Dear All, I am using find command find /my_rep/*/RKYPROOF/*/*/WDM/HOME_INT/PWD_DATA -name rk*myguidelines*.pdf -print The problem i am facing here is find /my_rep/*/ the directory after my_rep could be mice001, mice002 and mice001_PO, mice002_PO i want to ignore mice***_PO directory... (3 Replies)
Discussion started by: yadavricky
3 Replies

5. Shell Programming and Scripting

making find/sed to include directory names with spaces

how can i make find/sed to include directory names with spaces the command is like this for i in `find wp-content/themes -type f -print0 | xargs -0 grep -l -iE 'e'`;do sed -i -e 's/word1/word2/gI' "$i";done but it skips one directory names with spaces sed: can't read ./Nova: No such... (5 Replies)
Discussion started by: vanessafan99
5 Replies

6. UNIX for Dummies Questions & Answers

find command to look for current directory only

i have this find command on my script as: for i in `find $vdir -name "$vfile" -mtime +$pday` the problem with this code is that the sub-directories are included on the search. how do i restrict the search to confine only on the current directory and ignore the sub-directories. please advise.... (7 Replies)
Discussion started by: wtolentino
7 Replies

7. Shell Programming and Scripting

Find command, -name by directory and subdirectory?

Hi All, I'm trying to use the find command to return matches for a directory and file. For example, given the following directories: /one/two/three/file1.txt /one/three/two/file1.txt /one/four/two/three/file1.txt I'm expecting the following to be returned: ... (16 Replies)
Discussion started by: makodarear
16 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

include all files under a directory

I want to include all the subnet files under /etc/dhcpd/ to /etc/dhcpd.conf so here is my content of dhcpd.conf ... include "/etc/dhcpd/*"; however, the check-syntax reports syntax error, as they do not recognize the wildcard *, and display that " file /etc/dhcpd/* could not be found. ... (4 Replies)
Discussion started by: fredao
4 Replies

10. UNIX for Dummies Questions & Answers

using find command only in current directory

I am trying to use the find command to find files in the current directory that meet a certain date criteria. find . -type -f -mtime +2 However, the above also checks the directories below. I tried -prune, but that seems to ignore this directory completely. I read about using -path w/... (5 Replies)
Discussion started by: jliebling
5 Replies
Login or Register to Ask a Question