![]() |
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !! |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Multiple search in multiple files | maxvirrozeito | Shell Programming and Scripting | 2 | 12-13-2007 01:32 PM |
| cd to multiple directories and gzipping files within | sunsysadm2003 | Shell Programming and Scripting | 0 | 10-30-2007 05:50 PM |
| get files from multiple directories using FTP | amit1209 | Shell Programming and Scripting | 2 | 09-26-2007 09:39 AM |
| copy multiple files in different directories | ken2834 | UNIX for Dummies Questions & Answers | 3 | 03-25-2007 01:35 PM |
| FTP multiple files to different directories | abrd600 | Shell Programming and Scripting | 12 | 09-23-2004 07:56 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
||||
|
Search for files in multiple directories
I want to search for a file pattern in more than one directory. How I need to do that?
Here is the scenario: I am having a directory structure like the following: /log ...../20051001 ..........ftp_server_20051001.log ..........ftp_down_server.log ..........ftp_up_server.log ...../20051101 ..........ftp_server_20051101.log ...../20051201 ..........ftp_down_server.log ..........ftp_up_server.log ...../20060101 ..........ftp_down_server.log ..........ftp_up_server.log ...../20060201 ..........ftp_server_20060201.log ...../20060301 ..........ftp_down_server.log ..........ftp_up_server.log ..........ftp_server_20060201.log ...../20060401 ..........ftp_down_server.log ..........ftp_up_server.log I want to find out all the logs that start with "ftp_server" in the year 2006 from the log directory. Can some one help me with the command? I used to try like: $ find . -name 2006*/ftp_server*. It listed only one file information and quits with some error. I am looking for all the files Thanks, Ravi Last edited by ravikirankethe; 10-25-2006 at 04:03 PM.. |
|
||||
|
The -name option specifies the filename, not the path.
If there's a small number of them you can do this with shell globbing: Code:
ls 2006*/ftp_server* Code:
find . -iname 'ftp_server*' | grep 2006 |
|
||||
|
I think the command need to be like this:
find . -name 'ftp_server*' | grep 2006 This particular command is having the over head of pulling the file information from all the folders and then it greps for only 2006. The overhead here is searching all the files rather I want to narrow the search to search only in the 2006* folders. Can we achieve this? |
|
||||
|
find has options relating to this, but they're all depreciated for security reasons. We can do this, sure, but probably not in one command. Here we have 'find' locating directories beginning with 2006, and bash locating files within them beginning with ftp_server. The 2> /dev/null redirects error messages to /dev/null for directories with no ftp_server* file in them.
Code:
find . -mindepth 1 -maxdepth 1 -type d -name '2006*' |
while read DIR
do
ls ${DIR}/ftp_server*
done 2> /dev/null
Last edited by Corona688; 10-25-2006 at 06:09 PM.. |
|
||||
|
If that will work, then so will the ls 2006*/ftp_server* I suggested in the first place. Your solution has the same caveat -- too many directories will exceed the maximum commandline length of your shell.
|
|
||||
|
Yeah thats right.. we can use "ls" also to get the same results. Infact, I think "ls" is the best to use as we have more options in that.
Ex: $ ls -l 2006*/ftp_server* $ ls -l 2006*/*NCPAY_MAR*.enc |
| Sponsored Links | ||
|
|