Sponsored Content
Top Forums Shell Programming and Scripting UNIX Shell Scripting (Solaris) for File Checking Post 302975096 by Don Cragun on Wednesday 8th of June 2016 04:14:09 AM
Old 06-08-2016
If we start from my script in post #32 in this thread:
Code:
#!/bin/ksh
bad_found=0
dir='/files05/home/chgtprd/MXS/inb/CHTR/FTR/9/'
log='/files05/home/chgtprd/logfile.txt'

cd "$dir" && for file in *
do	if [ -f "$file" ] && ! /usr/xpg4/bin/grep -q FTRORD "$file"
	then	printf 'Invalid file "%s" in "%s"\n' "$file" "$dir"
		bad_found=1
	fi
done > "$log"
if [ $bad_found -eq 0 ]
then	printf 'There are no invalid files in "%s"\n' "$dir" > "$log"
fi

we find two things (marked in red) that you want to change as you process various directories. We can't simply use RavinderSingh13's proposal because we need to modify not only the directory as we process different directories, but also change the search pattern, and because just putting the code I had in a simple loop will overwrite the results of all but the last directory processed in the output log file. So, instead of just having the directories listed in Input_file (as Ravinder suggested), we also need to have the corresponding search patterns in that file. With the data you supplied in post #35, that would be something like:
Code:
/files05/home/chgtprd/MXS/inb/CHTR/FTR/9 FTRORD
/files05/home/chgtprd/GT/outb/CHTR/VRZ/9/send CHTRVRZPRD
/files05/home/chgtprd/GT/outb/CHTR/VRZ/9/send_ia/success CHTRVRZPRD
/files05/home/chgtprd/GT/outb/CHTR/FTR/9/send CHTRVRZPRD
/files05/home/chgtprd/GT/outb/CHTR/FTR/9/send_ia CHTRFTRORDP
/files05/home/chgtprd/GT/outb/CHTR/FTR/997/send CHTRFTRORDP
/files05/home/chgtprd/GT/outb/CHTR/VRZ/997/send CHTRFTRORDP

I used a space between the directory name and the search pattern (since there are no spaces in any of your pathnames and there are no spaces in any of your search patterns). The character chosen to separate these two pieces of data can be any character except a NUL byte, but needs to a character that is not in any of your directory pathnames. Using a space or a tab character as the separator allows us to use the shell's default field separators to keep the code as simple as possible.

Since this file contains configuration data for your script, let us call this a configuration file. And, if the script that uses this file is named dave2.sh, let us name this configuration file dave2.conf. And, your script needs to know where to find this file (just like it needs to know where to write your log file). So, we will make a few minor modifications to the script above to:
  1. add a variable specifying where to find your configuration file,
  2. add a loop to process each directory (with its associated search pattern),
  3. move the output redirection so the output from each pass through the loop will be written to your log file instead the output from each pass overwriting the output from the previous pass, and
  4. since your search patterns are all fixed strings, use grep -Fq (instead of just grep -q) to make it run slightly faster.
That leads to something like:
Code:
#!/bin/ksh
config='/files05/home/chgtprd/dave2.conf'
log='/files05/home/chgtprd/logfile.txt'

while read dir pattern
do	bad_found=0
	cd "$dir" && for file in *
	do	if [ -f "$file" ] && ! /usr/xpg4/bin/grep -Fq "$pattern" "$file"
		then	printf 'Invalid file "%s" in "%s"\n' "$file" "$dir"
			bad_found=1
		fi
	done
	if [ $bad_found -eq 0 ]
	then	printf 'There are no invalid files in "%s"\n' "$dir"
	fi
done < "$config" > "$log"

Note that this assumes that you have placed the file dave2.conf in the same directory where you want the log file to be placed. You can choose a different location for that file if you want to, but wherever you put it, an absolute pathname for that file has to be the value assigned to the variable config at the start of the script.

This is totally untested, but should come close to what you seem to want.

Last edited by Don Cragun; 06-08-2016 at 06:27 AM.. Reason: Remove note.
These 2 Users Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

difference between AIX shell scripting and Unix shell scripting.

please give the difference between AIX shell scripting and Unix shell scripting. (2 Replies)
Discussion started by: haroonec
2 Replies

2. AIX

Unix shell scripting to find latest file having timestamp embedded...

Hi guys, I have a directory in UNIX having files with the below format, i need to pickup the latest file having recent timestamp embedded on it, then need to rename it to a standard file name. Below is the file format: filename_yyyymmdd.csv, i need to pick the latest and move it with the... (2 Replies)
Discussion started by: kaushik25
2 Replies

3. Solaris

How to check the file existence using shell scripting in Solaris-10

Hi, I have a script which will check the fiel existence, the lines are as below if !(test -d ./data) then mkdir data fi In the first line error occurs as below generatelicense.sh: syntax error at line 2: `!' unexpected Where as this script works fine in linux OS. How to solve... (2 Replies)
Discussion started by: krevathi1912
2 Replies

4. UNIX for Dummies Questions & Answers

Unix Shell Scripting -- update employees not present in input file

ALL, My shell script takes a employee file as input. I have to identify the list of employees not in the input file and update their status in the database. Approach I followed: by traversing through the input file add all the emplid's to a variable. update the status of employees not in... (2 Replies)
Discussion started by: sailussr
2 Replies

5. Shell Programming and Scripting

C Shell Scripting - HELP! - checking total args in a script

Hi, I 'm trying to learn the scripting language and am trying to create a script to open a C Program, allow the user to edit it, and then run it. What I have works but only when you enter the name to be compiled and the c program, but what if you only entered the 1 argument (cprogram.c) ? but I 'm... (3 Replies)
Discussion started by: patel_ankz
3 Replies

6. Shell Programming and Scripting

generate tabular output from an input text file in unix shell scripting

Hi, I have the output (as below) which i want it to be in a table. For e.g. space utilization in PSE on path /logs is 0% space utilization in PSE on path /logs/tuxedo/tuxlsp is 16% space utilization in PSE on path /ldvarlsp/lsp/log is 37% space utilization in PSE on path /home is 6%... (7 Replies)
Discussion started by: pkbond
7 Replies

7. Shell Programming and Scripting

Request for file read option in Unix shell scripting

Hi Friends, I would like to read all the record from one txt file to other file txt For example I have two txt file a.txt and b.txt. I need to read a.txt record by record and I need add the system date @ end of each record before moving it to b.txt. Could you please share the coding for... (4 Replies)
Discussion started by: vinoth124
4 Replies

8. Shell Programming and Scripting

How to add trailer record at the end of the flat file in the unix ksh shell scripting?

Hi, How to add trailer record at the end of the flat file in the unix ksh shell scripting can you please let me know the procedure Regards Srikanth (3 Replies)
Discussion started by: srikanth_sagi
3 Replies

9. Shell Programming and Scripting

Read csv file, convert the data and make one text file in UNIX shell scripting

I have input data looks like this which is a part of a csv file 7,1265,76548,"0102:04" 8,1266,76545,"0112:04" I need to make the output data should look like this and the output data will be part of text file: 7|1265000 |7654899 |A| 8|12660000 |76545999 |B| The logic behind the... (6 Replies)
Discussion started by: RJG
6 Replies

10. Solaris

Solaris Shell Scripting

Hi, Want to know, is there any way to restrict a Solaris user to Single Login. Means a particular user can login once and if he or someone else tries to login with his ID then a message displayed "user already logged in" and denies his attempt. Regard, Jeet (1 Reply)
Discussion started by: CountJeet
1 Replies
All times are GMT -4. The time now is 06:11 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy