Counting files in a directory that match a pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Counting files in a directory that match a pattern
# 1  
Old 07-20-2006
Counting files in a directory that match a pattern

I have 20 files in a direcotry like BARE01_DLY_MKT_YYYYMMDD. The MKT differes for all these files but the remaining syntax remains the same for a particular day. If I am checking for today I need to make sure that there are 20 files that start with BARE01_DLY_MKT_20060720. How can I write a shell script to do this? I think I have to use for loop but don't know how to check for today or not. Kindly help.
# 2  
Old 07-20-2006
Using ksh:
Code:
integer filecount=0
for file in BARE01_DLY_???_$(date +%Y%m%d); do
  filecount=$filecount+1
done
echo $filecount

Your test could look something like:
Code:
if (( $filecount == 20 )); then
  print "True"
else
  print "False"
fi


Last edited by Glenn Arndt; 07-20-2006 at 01:06 PM.. Reason: Didn't include an example test
# 3  
Old 07-20-2006
You can also do something like this :

Code:
integer filecount=$(ls BARE01_DLY_???_$(date +%Y%m%d) 2>/dev/null | wc -l)

Jean-Pierre.
# 4  
Old 07-20-2006
Pierre,

Do you mean i have to have the code like this:

integer filecount=0
for file in BARE01_DLY_???_$(date +%Y%m%d); do
filecount=$filecount+1
done
echo $filecount

if (( $filecount == 20 )); then
print "True"
else
print "False"
fi

is this right? How can i embed them in the single KSH script. Please let me know.
# 5  
Old 07-20-2006
I don't know what you expect as output. Without knowing all your requirements (and without having a desire to write the entire script for you), I would do:

check20.sh:
Code:
#!/bin/ksh
integer filecount=0
for file in BARE01_DLY_???_$(date +%Y%m%d); do
  filecount=$filecount+1
done

if (( $filecount == 20 )); then
  exit 0 # exit with success
else
  exit 1 # exit with failure
fi

# 6  
Old 07-20-2006
Glenn,

I am sorry if I had asked to mean to write a script. But I created the script with the statements. What I need to know is I need to pass the name of the file as a parameter to the script and then do the processing we had before. How can this be possible.

The name of the files will look like BARE01_DLY_MKT_yyyymmdd for 20 markets. This script need to work for files named BARE02_DLY_MKT_20060803
which will be 20 again. So I need to generalise the script and pass the name of the file as parameter. So how can acheive this. Please let me know. I am trying to learn and develop at the same time.

Once again I appreicate your knid response.
# 7  
Old 07-20-2006
Glenn,

Thank you very much it's throughing an error now. But if I don't need to pass the whole name of the file but just BARE01_DLY.

some thing like this: check20.sh BARE01_DLY

But it has to check whether 20 files are present for that day or not? I am using the code below. It's not working. What's wrong in this?

#!/bin/ksh
myfilepattern=$@
integer filecount=0
for file in $myfilepattern_$(date +%Y%m%d); do
filecount=$filecount+1
done

if (( $filecount == 20 )); then
exit 0
else
exit 1
fi

Please suggest
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pattern match and replace indirect directory reference using sed

Hi, I need a ksh script to replace indirect directory references in an .ini file with a env variable using sed or awk. The .ini file is for example as such: A=.. B=../ C=../.. D=../../ E=../bin F=../../bin G=../../bin/xml H=../../bin/xml/ Need to replace an instance of .. or... (2 Replies)
Discussion started by: andyatit
2 Replies

2. Shell Programming and Scripting

Rearrange or replace only the second line after pattern match or pattern match

Im using the command below , but thats not the output that i want. it only prints the odd and even numbers. awk '{if(NR%2){print $0 > "1"}else{print $0 > "2"}}' Im hoping for something like this file1: Text hi this is just a test text1 text2 text3 text4 text5 text6 Text hi... (2 Replies)
Discussion started by: invinzin21
2 Replies

3. Shell Programming and Scripting

counting lines that match pattern

I have a file of 1.3 millions lines. some are with the same word twice on the line, some line have two diffrent words. each line has two words, one in brackets. example: foo (foo) bar (bar) thae (awvd) beladf (vswvw) I am sure this can be done with one line of... (6 Replies)
Discussion started by: robsonde
6 Replies

4. Shell Programming and Scripting

Counting the number of files within a directory input by the user

So I have a loop that stated if a directory exists or not. If it does it prints the number of files within that directory. I use this code... result=`(ls -l . | egrep -c '^-')` However, no matter which directory I input, it outputs the number "2" What is wrong here? (4 Replies)
Discussion started by: itech4814
4 Replies

5. Shell Programming and Scripting

counting the number of characters in the filename of all files in a directory?

I am trying to display the output of ls and also print the number of characters in EVERY file name. This is what I have so far: #!/bin/sh for x in `ls`; do echo The number of characters in x | wc -m done Any help appreciated (1 Reply)
Discussion started by: LinuxNubBrah
1 Replies

6. UNIX for Advanced & Expert Users

Counting files in a given directory

Hi all, Need some help counting files... :) I'm trying to count the number of files in a given directory (and subdirectories) which reportedly contains "thousands" of files. I'm using this: ls -R | wc -l However it's been an hour and looks like it's still running; there is no output... (18 Replies)
Discussion started by: verdepollo
18 Replies

7. Shell Programming and Scripting

pattern search for multiple log files and counting

I have 10 appservers and each appserver has 4 jvms . Each of these logs is archived and stored on a nfs directory . For example the files are /logs/200907/ap1-jvm1.server.log.20090715.gz /logs/200907/ap2-jvm2.server.log.20090714.gz /logs/200908/ap1-jvm1.server.log.20090812.gz I want to... (3 Replies)
Discussion started by: gubbu
3 Replies

8. UNIX for Dummies Questions & Answers

copying a pattern of files in one directory into other with new pattern names...

Hi, I have to copy a set of files abc* in /path/ to /path1/ as abc*_bkp. The list of files appear as follows in /path/: abc1 xyszd abc2 re2345 abcx .. . abcxyz I have to copy them (abc* files only) into /path1/ as: abc1_bkp abc2_bkp abcx_bkp .. . (6 Replies)
Discussion started by: new_learner
6 Replies

9. UNIX for Dummies Questions & Answers

Counting number of files in a directory

Some simple questions from a simple man. If i wanted to count the number of files contained within a directory, say /tmp would ls -l /tmp ¦ wc -l suffice and will it be accurate? second one: How would i check the number of files with a certain string in the filename, in the same directory. ... (2 Replies)
Discussion started by: iamalex
2 Replies

10. Shell Programming and Scripting

rm files in a directory, looping, counting, then exit

I am trying to write a script that will look for a file in a directory, then remove it. I need it to loop until it has removed a certain number of files. Is it better to do a repeat or to list each file in a pattern? Files will be numbered like RAF.01.*, RAF.02.*, etc. Thanks, James (6 Replies)
Discussion started by: JporterFDX
6 Replies
Login or Register to Ask a Question