Find command excluding directories and some files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find command excluding directories and some files
# 1  
Old 02-04-2017
Find command excluding directories and some files

hello.
I try to print a list of files but excluding some directories and some files.
I would like to write a command for :
find "from_dir" "ignore dir1, dir2, ..." "ignore file1, file2,...." "where file are older than 2017-02-03T06:00:00"

Note that "DO_IT" is a local function in the script and is exported like this
Code:
function DO_IT () {
    MY_PATH1="$1"
    if [[  ! -d "$MY_PATH1" ]] ; then
        echo "doing : $MY_PATH1"
    fi
}
export -f DO_IT

The first part run with success :
Code:
find /home/tux_user -type d \( -path /home/tux_user/.mozilla -o -path /home/tux_user/.cache -o -path  /home/tux_user/.local/share/RecentDocuments  -o -path  /home/tux_user/.local/share/kscreen  \) -prune -o -newermt '2017-02-03T06:00:00' -exec bash -c 'DO_IT "$0" '  {} \;

Now I want to exclude some files.
So I have add this part of code inside the find command
Code:
-o \( ! -name ".direct*" ! -name ".Xauthor*"  ! -name ".xsession-erro*"  ! -name "*.xsession-errors-:*"  ! -name ".bash_histor*"   \)

The command is now :
Code:
find /home/tux_user -type d \( -path /home/tux_user/.mozilla -o -path /home/tux_user/.cache -o -path  /home/tux_user/.local/share/RecentDocuments  -o -path  /home/tux_user/.local/share/kscreen  \) -prune -o \( ! -name ".direct*" ! -name ".Xauthor*"  ! -name ".xsession-erro*"  ! -name "*.xsession-errors-:*"  ! -name ".bash_histor*"   \) -o  -newermt '2017-02-03T06:00:00' -exec bash -c 'CHERCHE "$0" '  {} \;

But the specific files are still there (".direct*" ".Xauthor*" ".xsession-erro*" "*.xsession-errors-:*" ".bash_histor*").

Any help is welcome
# 2  
Old 02-05-2017
Not sure I can follow the entire logics, but
- what does CHERCHE "$0" do to the files in question?
- find executes actions if the test's result is TRUE. -o will add TRUE results, not remove any from before. So, to exclude some files, this might not be the desired operator?
# 3  
Old 02-05-2017
What the script does is hard to see. But.
Consider that sometimes using a tool for a complex task sometimes requires other tools.

As a template:

Code:
find path1 path2 path3 | grep -v '^\.*'

Which removes so-called hidden files - ones starting the dot character. They are hidden because the default for ls is not to display them. ls -a will display them.

If you have a "crazy" list of filenames to ignore - one that has too many names - use a pattern file with grep.

Code:
find path1 path2 path3 | grep -f pattern_file -v

Where pattern_file looks like:
Code:
.direct*
.X*
.x*

# 4  
Old 02-05-2017
You want to continue if not certain names, so the last -o should be a -a or omitted.
The following skips all dot-dirs and dot-files
Code:
find /home/tux_user -type d -name ".?*" -prune -o -type f ! -name ".*" -print

# 5  
Old 04-14-2017
The problem :
Quote:
Find from path any files
Newer than some date
Excluding files from some folders
Excluding some kind of files
Then sort
Here a solution of my problem
Code:
find "$MY_PATH" -type d \( "${FA[@]}" \) -prune -o \( -newer $MY_PATH/FROM_DATE_FILE.txt \! -newer $MY_PATH/TO_DATE_FILE2.txt   \)  -o -type f \( "${FB[@]}" -exec bash -c 'DO_IT $0 ' {} \; \) | sort

where
Code:
"${FA[@]}" contains a list of directories to exclude
FA=( -path  $MY_PATH/.cache  -o -path  $MY_PATH/.dbus ....  -o  -path  $MY_PATH/.config/kdeconnect )

where
Code:
"${FB[@]}" contains a list of files to exclude
FB=( ! -name  ".direct*" ! -name ".Xauthor*" ! -name ".xsession*" ....   ! -name "drkonqirc"  ! -name "granatierrc"  )

date are set using the command touch like
Code:
touch -d “2017-04-13 16:21:42”  $MY_PATH/FROM_DATE_FILE.txt 
touch -d “2017-04-14 00:00:00”  $MY_PATH/TO_DATE_FILE.txt

This User Gave Thanks to jcdole For This Post:
# 6  
Old 05-14-2017
And thank you also to Chubler_XL see : Bash expansion
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Find all files in the current directory excluding hidden files and directories

Find all files in the current directory only excluding hidden directories and files. For the below command, though it's not deleting hidden files.. it is traversing through the hidden directories and listing normal which should be avoided. `find . \( ! -name ".*" -prune \) -mtime +${n_days}... (7 Replies)
Discussion started by: ksailesh1
7 Replies

2. Shell Programming and Scripting

Find command to search files in a directory excluding subdirectories

Hi Forum, I am using the below command to find files older than x days in a directory excluding subdirectories. From the previous forums I got to know that prune command helps us not to descend in subdirectories. Though I am using it here, not getting the desired result. cd $dir... (8 Replies)
Discussion started by: jhilmil
8 Replies

3. Shell Programming and Scripting

Excluding directories from a find

I've looked at a few similar threads, but I can't bridge from those examples to what I'm working on, so I'm hoping someone can help. I want to extend the following statement find $PathToCheck -type f \( -not -iwholename "$ScriptDir/*" \) -exec md5sum "{}" \;>$NewSigs to exclude several... (9 Replies)
Discussion started by: nixie
9 Replies

4. Shell Programming and Scripting

Copy files/directories excluding multiple paterns

my directory structure is like below: basedir\ p.txt q.htm r.java b\ abc.htm xyz.java c\ p.htm q.java rst.txt my requirement is i want to copy all the files and directories... (0 Replies)
Discussion started by: ajayyadavmca
0 Replies

5. AIX

find command to list all the 777 files and directories owned by root user

Hi I'm logged in to an AIX box now and we need to do an audit on this box. cbssapr01:# pwd / Which command will show all the files and directories owned by root user with permissions as 777 ? (8 Replies)
Discussion started by: newtoaixos
8 Replies

6. UNIX for Dummies Questions & Answers

List directories and sub directories recursively excluding files

Hi, Please help me, how to get all the direcotries, its sub directories and its sub directories recursively, need to exclude all the files in the process. I wanted to disply using a unix command all the directories recursively excluding files. I tried 'ls -FR' but that display files as... (3 Replies)
Discussion started by: pointers
3 Replies

7. UNIX for Dummies Questions & Answers

Copy Directories excluding files

Hi guys, I want to copy folder and sub folders only. I don't want the files. If i use cp -r command it will copy entirely with files. Could any one suggest me. Thanks in advance (1 Reply)
Discussion started by: karthik82
1 Replies

8. UNIX for Dummies Questions & Answers

Excluding directories with find

How do I exclude directories with the find command on Solaris? I want to skip the directories /proc and /shared. find / -nouser -print This shows me all files and directories that don't have an owner but I need to skip /shared and /proc. I've been able to get it to work on Linux... (3 Replies)
Discussion started by: x96riley3
3 Replies

9. UNIX for Dummies Questions & Answers

Find Files in a Directory Excluding Subdirectories

Hi, I have a filename Location.txt in a directory /abc. Similar name file is present in its subdirectory /abc/xyz. I want to find the file which is present only in /abc and not in /abc/xyz. Please any1 of u can provide a quick suggestion. Its very urgent. Thanks, Amol (2 Replies)
Discussion started by: Amol_Dicholkar
2 Replies

10. UNIX for Advanced & Expert Users

find excluding the hidden files

Hi , I am trying to use the find command with delete in a directory . Even though i use a wil character search the find command is checking the hidden files which inturn results in error . Can i avoid look that into the hidden files ?? I am using HP unix . find /cv1/ -name "ite*"... (3 Replies)
Discussion started by: arunkumar_mca
3 Replies
Login or Register to Ask a Question