How can I prevent find from outputting the directory name /home/xxxxxxxx/Backup/.system (which isn't even "other writable"?
I am trying to search for files that are "world writable" on a shared web host using the find statement, and I want to prevent find from creating an error (because the of directory permissions). I don't want to just pipe stderr to /dev/null as this would suppress unexpected errors.
This statement works correctly but produces an error"
but for some reason the statement
creates the output
i.e. it outputs the name of the directory excluded along with the files that are "other" writeable.
FYI
the W bit is not set for "other", so I don't understand what is going on.
I am using find (GNU findutils) 4.4.2 on CentOS in case it matters.
How can I prevent find from outputting the directory name /home/xxxxxxxx/Backup/.system (which isn't even "world writable"?
As an aside, has anyone seen a good find tutorial? Man page does an OK job with the individual options, but really lacks the context for putting them together in combination
Chubler_XL is correct. Here's the relevant bit from the POSIX documentation:
Quote:
Originally Posted by POSIX
If no expression is present, -print shall be used as the expression. Otherwise, if the given expression does not contain any of the primaries -exec, -ok, or -print, the given expression shall be effectively replaced by:
Problem is you don't have a -print argument so all true expressions will print, including the prune.
Try:
Thank you so much... that is exactly what I needed.
---------- Post updated at 03:02 PM ---------- Previous update was at 10:06 AM ----------
Quote:
Originally Posted by alister
Chubler_XL is correct. Here's the relevant bit from the POSIX documentation:
[code[Originally Posted by POSIX
If no expression is present, -print shall be used as the expression. Otherwise, if the given expression does not contain any of the primaries -exec, -ok, or -print, the given expression shall be effectively replaced by:
( given_expression ) -print
[/code]
Regards,
Alister
Thanks for the reply Alister... I've read it, and have a bit more of a clue, but the phrase given expression is what is confusing me. In the context of the find statement:
I'm really confused about that term given expression. It appears there are two expressions, one for include and one for exclude.
It appears that the order of processing is: -prune \(-type d \( -iwholename "/home/xxxxxxxx/Backup/.system" \) \), where the directory to prune comes before the prune statement rather than after it. Yet -type f -perm -o+w is processed Left to Right as I would normally expect.
I now understand that I can add to the pruned directories by adding as many -o -iwholename "/path/to/exclude" inside the brackets.
I'm still at a bit of a loss as to the correct way to add additional conditions to the find (i.e. modified within the last 10 days for example, or owned by user yyyyyyy).
Also does the "prune" expression need to be the first, or can the order of statement be reordered?
I'm in awe of the power and flexibility of (*)nix, (not many software systems from the 1970s are still in popular use) but the learning curve is steep and man pages are usually just for "a reminder" as they often include enough context for a newbe.
Any tips/input/reference to a good tutorial would be appreciated.
First of all, please forgive my bad English.
Something you've written sounds a bit odd to me.
First: my find is GNU find 4.2.2 too, but my man find is like this one: UNIX man pages : find ()
and not like this one: find.
In my find manual I can't read any "given expression", but I read clearly: "If the expression contains no actions other than -prune, -print is performed on all files for which the expression is true."
Second: the manual I linked above is pretty clear about what is an expression, how is it made up of options, tests and actions, and what's find behaviour depending on them being true or false. If you haven't read it yet, I suggest you give it a try. I'm sure it will be of some help.
Third: action -prune doesn't mean "ignore it", but "do not descend into it, if it is a directory". So a pruned directory found by find is printed itself (but its content is ignored) if the action -print (the default action) is performed.
Fourth: besides Chubler_XL solution, you could go with:
(however you don't need any parenthesis).
This way the first expression, before the comma, is evaluated (-prune works), but its return values are then discarded: the directory /home/xxxxxxxx/Backup/.system is found by the first expression in which -prune gives a true return value for that directory, but this true value is then discarded, so only true return values of the second expression (after the comma) will cause something to be printed (default action).
--
Bye
Hi,
Kindly help me to understand the behavior or logic of the below shell command
$ echo $!#
echo $echo $
$
$ echo !$#
echo $#
0
I am using GNU bash, version 3.2.25(1)-release (2 Replies)
Can someone please explain this to me?
auser:x:500:500:Anne User:/home/auser:/bin/sh
buser:x:501:501:Bob User:/home/buser:/bin/bash
I'm used to it looking like this. What is the difference between the first name and second name? In the first case I had to use the first name to change my... (3 Replies)
Can someone please explain why I get two outputs with the du command? The first one gave me one. I also didn't ask for the second directory so why did it give that directory?
$ du -h "/media/Part 1/Desktop/playlist"
775M /media/Part 1/Desktop/playlist
$ du -h "/media/Part... (1 Reply)
Hi,
I using tcl script to perform certain conditions. Part of the results should have average . I couldn't figure out what 's the cause as the result of the average is Zero.
Example of the case????
#!/usr/bin/tclsh
set counter 500
set total 1000
puts "Total num: $total \n"
puts ... (3 Replies)
Hi all,
After deleting some large log files on solaris 9 machine I can see strange df output shows below
/dev/vx/dsk/rootvol 45G 16384E 50G 39879076698694% /
I thought it will back to normal once I restart it but did not. I have seen in sunsolve article 6362734 that "Solaris 8... (0 Replies)
I was reviewing yesterday's sar file and came across this strange output! What in the world? Any reason why there's output like that?
SunOS unixbox 5.10 Generic_144488-07 sun4v sparc SUNW,T5240 Solaris
00:00:58 device %busy avque r+w/s blks/s avwait avserv
11:20:01 ... (4 Replies)
Hi
At OK> prompt, I have run the boot -s command
After system is coming on to multiuser state, when I run the " who -r" command, I get the following message
# who -r
run-level Oct 17 03:48 last=
Means I dont see "S" after run-level keyword. Could any one... (2 Replies)
hi, in solaris 10 SUN SPARC V245 server the following df -h output is showing . can i reuse the following disk space by deleting them
/platform/sun4u-us3/lib/libc_psr/libc_psr_hwcap1.so.1
20G 5.2G 14G 27% /platform/sun4u-us3/lib/libc_psr.so.1... (2 Replies)
I had a similar script in solaris and it had no problem. I wrote this one in freeBSD and it gave me strange output. Can anyone please tell me why? thanks a lot
#!/bin/sh
#This is a shell script that checks file system capacity mounted on /home directory
#If file system is over 90% capacity,... (1 Reply)
Hi,
I am getting different output for grep depending which directory I am in.
The following is a transcript of my session, I am using egrep but have also used grep -E. The directory names have been changed for security:
$pwd
/dir1/dir2/dir3/dir4
$echo 000000 |egrep -v
$echo $?
1
$cd ..... (10 Replies)