THE FIND COMMAND
Sometimes there
are tips that should have been posted long ago, but because they are
less simple to explain, I never did find the time to set them up
properly.
This one I found hanging around in my Pre-Tip directory for a long
time, and today it is time to finally pick it up.
The
"find" command is a command we use next to other commands like "locate"
( or "slocate" ) and "whereis" but it has a good few extra options we
can use with it.
We can use "find" with a wild card ( * ), but it
works best when we know the name of the file or directory we are
looking for. ( NOTE: * does not replace a dot, so you can do "lilo.*"
but not "lilo*" to find lilo.conf )
My advice is, read the text and experiment a bit to see how it works
for you.
Okay, let's go for it, first step:
| CODE |
| $
find -type f -name dummy |
This
is the basic way to use "find". If no path is given, it looks in the
present directory and its subdirectories. Then we use the "-type f"
to tell find it we are looking for a file ( f ) directory ( d ) or link
( l ) after that "-name dummy" to tell it we are looking for a
file with the name "dummy" ( with wildcard "-name *ummy?" ).
You will see it will find the answer:
| QUOTE=Screen
|
| ./.kde/share/config/dummy |
One step up:
| CODE |
| $
find / -type f -name dummy
2>/dev/null |
This time "find" not only searches the local directory, because the
first argument we give it has to look in "
/"
( the complete filesystem . . . . so that takes a while ) and because
we give the command as "normal user" and not as root it would lead to a
lot of "permission denied" messages if we did not add the last bit "
2>/dev/null"
( See:
The black hole )
On my Mandrake install the answer to this command is:
| QUOTE=Screen
|
/home/bruno/.kde/share/config/dummy
/usr/share/mdk/kde/root-interface/dummy |
Another step up:
| CODE |
| $
find / -type f -name dummy
2>/dev/null -exec cat {} \; |
This time it does all the previous, but at the end of the command you
see "-exec cat {} \;" . . . this means "-exec" execute
the next command "cat" on the results found from the find
command "{}" . . . . the "\;" means that the exec command
ends there.
Again on my system the result is:
| QUOTE=Screen
|
[$Version]
update_info=kio_help.upd:kde3_2,favicons.upd:kde3_2 |
Now the final step up:
| CODE |
| $
find / -type f -name dummy
2>/dev/null -exec cat {} \; >tesst.txt |
Also, this time it has all the things listed above, but I added ">tesst.txt,
which tells it to ">" write them in a file called "tesst.txt"
instead. ( And not put the output on the screen )
So
if you do not know where your lilo.conf file is located, but you want a
copy of it for reading in your home directory, here is what you do:
| CODE |
| $
find / -type f -name lilo.conf
2>/dev/null -exec cat {} \; >lilo.txt |
And you will find a file called lilo.txt in your /home directory
And because I know you want to know more, here is the FUN step:
| CODE |
| $
find /home -type f -name "*.sxw" -atime
-3 -user bruno |
Here we "
find" in "
/home" all "
-type f files with
the "
-name" "
*.sxw" so all OpenOffice sxw documents that "
-atime
-3" have been accessed in the last 3 days ( "
-atime +3" would
be: have NOT been accessed ) and that are owned by the "
-user bruno"
( So basically: has anyone been messing with my files in the last 3
days ?? )
Additional tip: if you look for *.sxw, type "*.sxw" same goes for "*.txt", "*.doc" etc.etc.
Well, that is it for today, if you want to know even more, have a look
at:
man find

Bruno
-- Dec 14 2004 ( Revised Dec 10 2005 ) --