Getting file count in a variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Getting file count in a variable
# 1  
Old 05-26-2014
Getting file count in a variable

Hi All

I am checking for the presence of certain no of files in a directory. Only if the required no of files are present should I continue with my processing.

For e.g. in the temp directory below, there are 4 files of the format sample_aa(bb)(cc)(dd)_test. I need to check the count of these four before continuing. Trying something like the below:

Code:
cd /temp
for i in aa bb cc dd
do
fname=$(ls sample_${i}_test | wc -l)
if [ $fname -eq 4 ]
then
echo "There are "$fname" files present in temp"
fi
done

When I echo $fname, I get the value of 1 for each of the four files. I need to check for the value of 4 which it holds at the end of the loop basically. Thanks in advance.
# 2  
Old 05-26-2014
Code:
for i in aa bb cc dd
do
  fname="${fname} sample_${i}_test"
done
cd /temp
if [[ $(ls -l ${fname} | wc -l) -eq 4 ]]; then
  echo "${fname} files are available in /temp"
fi

# 3  
Old 05-26-2014
Your if statement is embedded within your for loop, that's your problem. So your ${fname} variable will change each time you iterate over the variables in your for loop. The if statement should be performed after the for loop.
# 4  
Old 05-26-2014
Thank you both for your help. It worked with some minor tweaking to @SriniShoo's code
# 5  
Old 05-26-2014
Assuming you are using a shell that accepts POSIX standard arithmetic expansions, a more direct approach would be something like:
Code:
cd /temp    # Did you really mean /tmp???
fcnt=0
for i in aa bb cc dd
do      if [ -e "sample_${i}_test" ]
        then    fcnt=$((fcnt + 1))
        fi
done
if [ $fcnt -eq 4 ]
then    echo "There are $fcnt files present in /temp"
else    echo "There are only $fcnt files present in /temp; try again later."
        exit 1
fi
echo 'Continue processing...'

# 6  
Old 05-26-2014
Hello,

Following may help.

Code:
ls -ltr | awk '/test_testaa|bb|cc.txt/ {a++} END{ {if(a > 3) {print "files have been found."} else {print "files have not been found."}} }'


Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 7  
Old 05-26-2014
Quote:
Originally Posted by RavinderSingh13
Hello,

Following may help.

Code:
ls -ltr | awk '/test_testaa|bb|cc.txt/ {a++} END{ {if(a > 3) {print "files have been found."} else {print "files have not been found."}} }'


Thanks,
R. Singh
If you're going to use this method, you need to add a cd to get into the correct directory; you don't need the ls options, and the ERE in awk is wrong for the specified files. The following would work (but would be less efficient than using shell built-ins as shown in previous suggestions):
Code:
cd /temp;ls | awk '/^sample_(aa|bb|cc|dd)_test$/ {a++} END{if(a > 3) print "files have been found."; else print "files have not been found."}'


Last edited by Don Cragun; 05-26-2014 at 04:29 AM.. Reason: Add anchors
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk variable search and line count between variable-search pattern

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)
Discussion started by: busyboy
4 Replies

2. UNIX for Dummies Questions & Answers

To count total of specific character in a file and save its value to a variable

Hi all, I have a file that contains characters. How do I get total of spesific character from that file and save the count to a variable for doing for calculation. data.txt 1 2 2 2 2 3 3 4 5 6 7 8 5 4 3 4 (5 Replies)
Discussion started by: weslyarfan
5 Replies

3. Shell Programming and Scripting

count lines in file to variable

I have a text file in which you need to identify the number of lines that looks like this: awk '{x + +} END {print x}' filename The problem is that I do not know how this data to any variable in which then need to continue to work in a cycle for .. do not know someone help? Sorry for my... (4 Replies)
Discussion started by: gizmo16
4 Replies

4. UNIX for Dummies Questions & Answers

How to set a variable with a count variable i.e. VARIABLE$COUNT

Hi All I've very nearly finished this script I'm working on but have hit another idiots problem, after googling I can't see a solution for this one. I have a while count loop that checks checks two consecutive values then increments the count by two. What the script has to do is then check... (5 Replies)
Discussion started by: Bashingaway
5 Replies

5. Shell Programming and Scripting

To count a string with in a variable

I am writing a ksh to check for duplicate records in two different set of tables on oracle database, to get this i am running two plsql qurries at a time through the ksh, so the output of the qurries will be stored in variable say "SQL_STRING". So now to say if duplicate records exists in table or... (6 Replies)
Discussion started by: vpv0002
6 Replies

6. Shell Programming and Scripting

count of a string within a variable

I am writing ksh to check for duplicate records in two different set of tables on oracle database, to get this i am running two plsql qurries at a time through the ksh, so the output of the qurries will be stored in variable say "SQL_STRING". So now to say if duplicate records exists in table or... (3 Replies)
Discussion started by: vpv0002
3 Replies

7. Shell Programming and Scripting

Getting Sum, Count and Distinct Count of a file

Hi all this is a UNIX question. I have a large flat file with millions of records. col1|col2|col3 1|a|b 2|c|d 3|e|f 3|g|h footer**** I am supposed to calculate the sum of col1 1+2+3+3=9, count of col1 1,2,3,3=4, and distinct count of col1 1,2,3=c3 I would like it if you avoid... (4 Replies)
Discussion started by: singhabhijit
4 Replies

8. UNIX for Dummies Questions & Answers

How to count the record count in an EBCDIC file.

How do I get the record count in an EBCDIC file on a Linux Box. :confused: (1 Reply)
Discussion started by: oracle8
1 Replies

9. Shell Programming and Scripting

setting file count to a variable

Hey guys. My goal here is to count the number of .dat files in in a directory(28 files). If 28 files exist I am ok. Having trouble doing this. Any help would b e greatly appreciated. #!/usr/bin/ksh #============================================================================= ### Define local... (3 Replies)
Discussion started by: ecupirate1998
3 Replies

10. Shell Programming and Scripting

select count(*) into a variable

Hi, Could anybody help me how can I assign the value of "select count(*) from table1" to a variable in an unix shell script. Thanks. (4 Replies)
Discussion started by: nguda
4 Replies
Login or Register to Ask a Question