UNIX Shell Scripting (Solaris) for File Checking


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting UNIX Shell Scripting (Solaris) for File Checking
# 36  
Old 06-08-2016
Hello daveaztig14,

A simple way could be put all the directories information into a Input_file and you could read it from there like for an example as follows.
Code:
cat Input_file
/files05/home/chgtprd/MXS/inb/CHTR/FTR/9/
/files05/home/chgtprd/GT/outb/CHTR/VRZ/9/send
/files05/home/chgtprd/GT/outb/CHTR/VRZ/9/send_ia/success
/files05/home/chgtprd/GT/outb/CHTR/FTR/9/send
/files05/home/chgtprd/GT/outb/CHTR/FTR/9/send_ia
/files05/home/chgtprd/GT/outb/CHTR/FTR/997/send
/files05/home/chgtprd/GT/outb/CHTR/VRZ/997/send

Then following will be code changes for previously code shown by Don, please try this and let us know how it goes then.
Code:
#!/bin/ksh
bad_found=0
log='/home/abainzd/logfile.txt'
while read dir
 do
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
done < "Input_file"

NOTE: I haven't tested above code.

Thanks,
R. Singh

Last edited by RavinderSingh13; 06-08-2016 at 04:03 AM.. Reason: Added 'do' after while, apologies for this.
This User Gave Thanks to RavinderSingh13 For This Post:
# 37  
Old 06-08-2016
Hi R.Singh,

i have tried your steps.

Last edited by daveaztig14; 06-08-2016 at 06:41 AM..
# 38  
Old 06-08-2016
Hello daveaztig14,

My sincere apologies, somehow I have not written do after while, could you please try following.
Code:
#!/bin/ksh
bad_found=0
log='/home/abainzd/logfile.txt'
while read dir
do
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
done < "Input_file"

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 39  
Old 06-08-2016
hi R.sings,

Last edited by daveaztig14; 06-08-2016 at 06:42 AM..
# 40  
Old 06-08-2016
Hello daveaztig14,

Could you please change Input_file to /home/abainzd/Input_file and let me know how it goes.
Code:
#!/bin/ksh
bad_found=0
log='/home/abainzd/logfile.txt'
while read dir
do
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
done < "/home/abainzd/Input_file"

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 41  
Old 06-08-2016
Hi R.Singh,

followed your code



tahnks.

Last edited by daveaztig14; 06-08-2016 at 06:42 AM..
# 42  
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:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
Login or Register to Ask a Question