How to search a filename stored in a variable using a pattern?
hi,
i have a variable which contains some file names delimited by a single space.
i have another variable that contains a pattern
i want to take the filenames from FNAME variable and assign each file name in to an array say
for example:- *.lst will match two files that are s2.lst and s4.lst, so i want to assign s2.lst and s4.lst to a array
can anyone say how can i do the above.?
but in the above code, the array FILE[] is not accessible outside the while loop.
when i try to print FILE[0] and FILE[1] outside the while loop, it shows empty values.
Deleting *. utterly changes the meaning of the pattern. A filename that does not match *.ext could match ext, and, vice versa, one that did match could then not match.
It gets worse. sh pattern matching notation and regular expressions are not equivalent. One is not even a subset of the other. Taking sh pattern notation and using it as an AWK regular expression makes no sense.
The parameter expansions of $FNAME and $FILE_PATTERN could trigger pathname expansion (aka file globbing). Unintended globbing of FNAME could lead to items in the output that were not part of the FNAME list. Unintended globbing of FILE_PATTERN could drastically alter the value of var.
The bracketed expression in the awk option argument -F[" "] is also vulnerable to pathname expansion, although the result of such an expansion is identical to the pattern itself, which would alter nothing. Still, it's good to be aware that it could happen.
The echo statements can yield inaccurate output if the argument looks like an option.
Your code may yield correct output in some cases, but it won't work generally.
A correct approach which is also much simpler and more efficient:
For those who prefer the less-readable one-liner format:
Using case $i in $FILE_PATTERN) ... ;; esac is more portable, but any shell that supports that array syntax also supports [[ ... ]].
Hello,
We have wrote shell script for multiple file name search pattern.
file format: <numner>_<20180809>.txt
starting with single number and ending with 8 digits number
Command:
awk -v string="12_1234" -v serch="^+_+$" "BEGIN{ if (string ~/serch$/) print string }"
If sting matches... (4 Replies)
Input:
|Running the Rsync|Sun Oct 16 22:48:01 BST 2016
|End of the Rsync|Sun Oct 16 22:49:54 BST 2016
|Running the Rsync|Sun Oct 16 22:54:01 BST 2016
|End of the Rsync|Sun Oct 16 22:55:45 BST 2016
|Running the Rsync|Sun Oct 16 23:00:02 BST 2016
|End of the Rsync|Sun Oct 16 23:01:44 BST 2016... (4 Replies)
Hi experts,
I have two arrays one has the file paths to be searched in , and the other has the files to be serached.For eg
searchfile.dat will have
abc303
xyz123
i have to search for files that could be abc303*.dat or for that matter any extension . abc303*.dat.gz
The following code... (2 Replies)
I am writing a bash script where I use two types of files that both contain a numerical pattern of the type 123.4567 (always groups of three and four digits separated by period) within their filenames. I need to assign the numerical patterns of these filenames to variables (inside a for loop),... (6 Replies)
Hi there,
I have a small question (most like a true beginners question :) ).
In a script I have a filename stored in variable (vFile). Through the an input parameter this variable gets its value (for instance cookie.txt).
Two new variables are created with the value of vFile, but with a... (2 Replies)
I have two variables,
my $filename = "abc_yyyy_mm_dd.txt";
my $filename1 = " abc_2011_11_07.txt";
I need to perform some operations after checking if $filename has $filename1 in it
i have used the below code,
if($filename =~ /^$filename1/)
{
----
--
} (2 Replies)
I want to replace a certain pattern with the variable already defined.
e.g.
set path_verilog = /home/priya/bin/verilogfile
my file contents are :
verilog new
verilog is defined here verilog_path_comes
I am using the below command
sed 's/verilog_path_comes/'$path_verilog'/g' <filename>... (2 Replies)
guys,
I need to know how to assing pattern matched string as an input command variable. Here it goes'
My script is something like this.
./routing.sh <Server> <enable|disable>
## This Script takes an input <Server> variable from this line of the script ##
echo $1 | egrep... (1 Reply)
For a Script I need to detemine which field of the unix environment variable SHLIB_PATH has the
WALTDB entry.
export SHLIB_PATH=/usr/user5/WALTDB/oracle/product/10.2.0/lib32:/usr/TZD/bin.wdad/mug/oracle/lib:
echo $SHLIB_PATH | awk -F: '{ print $1 }'
Shure gives me the first entry, but... (6 Replies)
Hey there,
I have a table of contents file of the form
1 Title1
1.1 Subtitle1
1.1.1 Subsubtitle1
1.1.2 Subsubtitle2
...
and want to count the number of dots in the first field to find out the level of the section.
I use the gsub function for the job, which works if I pass the pattern... (2 Replies)