If you'd only said "dozens" I'd have have suggested this in the first place, but this is dangerous when you have lots of files and folders. There's a limit to how many things one glob can find -- in some shells, no more than a page or two worth.
The version with two finds has no limit at all.
Quote:
after deleting the files inside PGP I also want is to delete the PGP folder then remove the folder ??????????????????????????????? also.
You're only deleting some of the files. If they're not empty, I doubt you really want them deleted.
You'll need to use the two-find version to do this anyway, since it'd be torturous to get the right directory in one find and use it only once. I'll use 0-9, a-f if that worked for you.
Code:
# Find all directories in .../PROD-* beginning with [0-9a-f]
find /Production/ST/st*/Outbound/Prod/PROD-* -type d -name '[0-9a-f]*' -print -name '*' -prune
while read DIR
do
# Find files in "${DIR}/PGP", delete them if old enough
find "${DIR}/PGP" -type f -mtime +2 | xargs -d '\n' echo rm
# Remove these directories only if they're empty
rmdir "${DIR}/PGP" && rmdir "${DIR}"
# the rmdir's will cause some error messages when they fail, redirect that to /dev/null
done 2> /dev/null
find | xargs rm will run 'rm file1 file2 file3 ...' where find -exec rm would run 'rm file1; rm file2 ; rm file3 ...' so xargs makes it much faster. The -d '\n' is to tell xargs to consider anything but newlines as part of the filename.
The 'echo' is just a test, to print filenames instead of deleting as a test. Remove it once you're sure it's doing what you wanted.
Last edited by Corona688; 06-22-2011 at 05:23 PM..
I'm trying to figure out how to build a small shell script that will find old .shtml files in every /tgp/ directory on the server and delete them if they are older than 10 days...
The structure of the paths are like this:
/home/domains/www.domain2.com/tgp/
/home/domains/www.domain3.com/tgp/... (1 Reply)
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)
The following command works fine in my cshell script:
set Deliverables = `find . -name "eliverables" -print`
The following command does not work:
set LASFiles = `find . -name "*." -print`
In the first example, when tested in an if statement, the script will continue whether a... (3 Replies)
Hi i have a requirement to search for all files in a directory.
the files will start as file1_*,file2_*,file3_*
where the wild card character is a timestamp. so on a particular day i may get files like
file1_1103120042
file1_1102010345
file2_1101093423
file3_1103120042... (3 Replies)
Hi ,
I am looking for a command to change directory in FTP server with wildcard specified. Basically this is what i am trying.
localserver# ftp remoteserver
ftp> ls
41000_42000
42000_43000
ftp> cd 41*
550 CWD failed. '41*' : no such file or directory.
Could anyone please let me know... (6 Replies)
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)
I'm sure this is by design, but using something like
for f in dir/*
do echo $f
done
produces unexpected (to me) results if run against an empty directory. I'd have expected it to not execute the loop, but it actually calls it with f set to 'dir/*'.
Now I know that I'm trying to protect... (2 Replies)
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)
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)
HI there,
I am trying to find and replace with wildcard with
data
chr1 69511 69511 A G 1/1:0,34:791,78,0:78:34 0/1:55,60:1130,0,1513:99:116 1/1:0,28:630,63,0:63:28 0/1:0,34:626,57,0:57:34
To this
chr1 69511 69511 A G homo hetero homo hetero
Where I find and replace 0/1 with... (3 Replies)
Discussion started by: daashti
3 Replies
LEARN ABOUT MINIX
find
FIND(1) General Commands Manual FIND(1)NAME
find - find files meeting a given condition
SYNOPSIS
find directory expression
EXAMPLES
find / -name a.out -print
# Print all a.out paths
find /usr/ast ! -newer f -ok rm {} ;
# Ask before removing
find /usr -size +20 -exec mv {} /big ;
# move files > 20 blks
find / -name a.out -o -name '*.o' -exec rm {};
# 2 conds
DESCRIPTION
Find descends the file tree starting at the given directory checking each file in that directory and its subdirectories against a predi-
cate. If the predicate is true, an action is taken. The predicates may be connected by -a (Boolean and), -o (Boolean or) and ! (Boolean
negation). Each predicate is true under the conditions specified below. The integer n may also be +n to mean any value greater than n, -n
to mean any value less than n, or just n for exactly n.
-name s true if current filename is s (include shell wild cards)
-size n true if file size is n blocks
-inum n true if the current file's i-node number is n
-mtime ntrue if modification time relative to today (in days) is n
-links ntrue if the number of links to the file is n
-newer ftrue if the file is newer than f
-perm n true if the file's permission bits = n (n is in octal)
-user u true if the uid = u (a numerical value, not a login name)
-group gtrue if the gid = g (a numerical value, not a group name)
-type x where x is bcdfug (block, char, dir, regular file, setuid, setgid)
-xdev do not cross devices to search mounted file systems
Following the expression can be one of the following, telling what to do when a file is found:
-print print the file name on standard output
-exec execute a MINIX command, {} stands for the file name
-ok prompts before executing the command
SEE ALSO test(1), xargs(1).
FIND(1)