Find command and regex


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Find command and regex
# 1  
Old 09-11-2014
Find command and regex

Hi All,
We have to copy some files from a source directory to a destination directory. We only have to copy the file if the filename is in a list of values.

We can use find command:
Code:
 
find . -type f -name '*_111.txt' -o -name '*_115.txt' ... -exec cp {} /tmp \;

But the list contains 30 filenames. Can we use a regular expression instead of -name?

For example, something like the following java regular expression:
Code:
 
[^\s]+_(111|115|116|120|130|153|198).txt

Thanks in advance.
# 2  
Old 09-11-2014
No, but you can use pattern matching:
Code:
find . -type f \( -name '*_11[156].txt' -o -name '*_1[23]0.txt' -o  -name '*_153.txt' -o -name '*_198.txt \) '-exec cp {} /tmp \;


Last edited by Don Cragun; 09-11-2014 at 09:02 PM.. Reason: fix parens
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 09-11-2014
Why don't you just copy all files in the list and handle errors like "file not found"?
# 4  
Old 09-11-2014
Or generate the pattern for find:
Code:
findpat=""; sep=""
for pat in 111 115 116 120 130 153 198
do
 findpat="$findpat $sep -name *_$pat.txt"; sep="-o"
done
find . -type f \( $findpat \) -exec cp {} /tmp \;

@Rudi: the list is likely a subset of the files.
--
BTW the -name ... -o -name ... must be in \( \) because -a has higher precedence than -o and just -exec ... is short for -a -exec ....

Last edited by MadeInGermany; 09-11-2014 at 08:12 PM..
This User Gave Thanks to MadeInGermany For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sendmail K command regex: adding exclusion/negative lookahead to regex -a@MATCH

I'm trying to get some exclusions into our sendmail regular expression for the K command. The following configuration & regex works: LOCAL_CONFIG # Kcheckaddress regex -a@MATCH +<@+?\.++?\.(us|info|to|br|bid|cn|ru) LOCAL_RULESETS SLocal_check_mail # check address against various regex... (0 Replies)
Discussion started by: RobbieTheK
0 Replies

2. Shell Programming and Scripting

what's wrong with my regex using find

#ls json-* json-lexer.c json-lexer.h json-parser.c json-parser.h json-streamer.c json-streamer.h #find . -regex '^(json-)+.' return nothing (3 Replies)
Discussion started by: yanglei_fage
3 Replies

3. UNIX for Dummies Questions & Answers

Using regex in find command

I don't understand why the following simple command is not working: find assign{1,2}Variations don't work, either: find assign+ find assign? ls assignAll I am trying to do is make an alias for running a C++ program of the name assign# or assign##. But the regular expressions aren't working. @_@... (27 Replies)
Discussion started by: Zucriy Amsuna
27 Replies

4. Shell Programming and Scripting

regex help with 'find'

How to do alternation using regular expressions in the 'find' command? Like say you want to find all files that do not match the names specifically "this" or "that" within a directory using regular expressions? (10 Replies)
Discussion started by: stevensw
10 Replies

5. Shell Programming and Scripting

Find directories by regex

Hello, I want to check if directories exist with a regex expression dir1=/temp/local/*/home (exists on file system) dir2=/temp/server/*/logs (does not exist on file system) I want to check if there are any directories with the above regex Code: if ];then echo "Directory... (4 Replies)
Discussion started by: gogineni
4 Replies

6. Shell Programming and Scripting

find regex and remove #

hi , how do i remove # from a line where i found regex.. don't need to remove all the line.. only remove comment.. (3 Replies)
Discussion started by: Poki
3 Replies

7. Shell Programming and Scripting

Find regex

Hi There, Can anybody help me out for searching this regular expression? xxxxx.yyy.zzzz.From-ABCD.To-XYZ.xxxxxx I would like the ID1 and ID2 (knowing which one is Id1 and id2) .From-<ID1>. and .To-<ID2>. Thanks in advance!! Regards, Bhaskar (4 Replies)
Discussion started by: bhaskar_m
4 Replies

8. UNIX for Dummies Questions & Answers

Regex in find command

Hi, I need to find out the files whcih contains date in YYYYMMDD in their name. I don't know if I can use regex in side find. Now I am using commad for the same purpose which is not full proof. find . -name "**" -print But I want then It should contain at lease 8 digit in their... (3 Replies)
Discussion started by: siba.s.nayak
3 Replies

9. Shell Programming and Scripting

Find with RegEx

I have some files in unix ls -1 TMH.backend.tar.421E-03.Z TMH.backend.tar.421E-04.Z TMH.backend.tar.421E-05.Z TMH.backend.tar.421E-06.Z TMH.backend.tar.421E-07.Z TMH.backend.tar.421E-08.Z TMH.backend.tar.421E-08.Z.bak20081223164844 TMH.backend.tar.421E-09.Z... (1 Reply)
Discussion started by: on9west
1 Replies

10. Shell Programming and Scripting

dont't find right regex

I have a string which contains following information: <SZ.T><P ALIGN="CENTER"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="+3">Bundesregierung nimmt sich dicke Deutsche vor</FONT></P></SZ.T> <SZ.UT><P ALIGN="CENTER"><FONT SIZE="+1"><I> Seehofer und Schmidt planen Kampagne gegen... (3 Replies)
Discussion started by: trek
3 Replies
Login or Register to Ask a Question