Sponsored Content
Top Forums Shell Programming and Scripting Can anyone make this script run faster? Post 302219627 by shew01 on Tuesday 29th of July 2008 04:51:01 PM
Old 07-29-2008
Can anyone make this script run faster?

One of our servers runs Solaris 8 and does not have "ls -lh" as a valid command. I wrote the following script to make the ls output easier to read and emulate "ls -lh" functionality. The script works, but it is slow when executed on a directory that contains a large number of files. Can anyone make this script run faster?

TIA

J

###################################

Code:
#!/usr/bin/ksh

function ConvertBytes
	{
	if (( Convert_QTY > 1073741824 ))
		then
			Convert_QTY=`echo "$Convert_QTY / 1073741824" | bc -l`
			FormattedConvert_QTY=$(printf "%4.0f" "$Convert_QTY")
			FormattedConvert_QTY="${FormattedConvert_QTY} G"
		else
			if (( Convert_QTY > 1048576 ))
				then
					Convert_QTY=`echo "$Convert_QTY / 1048576" | bc -l`
					FormattedConvert_QTY=$(printf "%4.0f" "$Convert_QTY")
					FormattedConvert_QTY="${FormattedConvert_QTY} M"
				else
					if (( Convert_QTY > 1024 ))
						then
							Convert_QTY=`echo "$Convert_QTY / 1024" | bc -l`
							FormattedConvert_QTY=$(printf "%4.0f" "$Convert_QTY")
							FormattedConvert_QTY="${FormattedConvert_QTY} K"
						else
							FormattedConvert_QTY=$(printf "%4.0f" "$Convert_QTY")
							FormattedConvert_QTY="${FormattedConvert_QTY} B"
					fi
			fi
	fi
	}

	# ****************************************************************
	# *
	# *	Write the directory information to a temporary file
	# *
	# **********************************************+*****************

	TempFile_NME=/tmp/llh.ksh.$$.tmp

	ls -lF $ls_SW $FileSpecification | awk '{ print $1 "+" $2 "+" $3 "+" $4 "+" $5 "+" $6 "+" $7 "+" $8 "+" $9 }'>$TempFile_NME

	# ****************************************************************
	# *
	# *	Loop through the temporary file and display formatted information
	# *
	# **********************************************+*****************

	echo "\nPermission Lnk Owner  Group   Size       Date                   File Name"
	echo   "---------- --- ------ ----- -------- ------------ ----------------------------------------"

	while read InputRecord
		do
			Permissions_DSC=$(echo "$InputRecord" | cut -d"+" -f1)

			if [ $Permissions_DSC != "total" ]
				then
					Links_QTY=$(echo "$InputRecord" | cut -d"+" -f2)
					Links_QTY=$(expr "$Links_QTY" ) # Convert to integer
					FormattedLinks_QTY=$(printf "%3.0f" "$Links_QTY")

					Owner_NME=$(echo "$InputRecord" | cut -d"+" -f3)
					FormattedOwner_NME=$(printf "%-8s" "$Owner_NME")

					Group_NME=$(echo "$InputRecord" | cut -d"+" -f4)
					FormattedGroup_NME=$(printf "%-5s" "$Group_NME")

					Convert_QTY=$(echo "$InputRecord" | cut -d"+" -f5)
					Convert_QTY=$(expr "$Convert_QTY" ) # Convert to integer
					ConvertBytes
					FormattedSize_QTY=$FormattedConvert_QTY

					Create_DTE=$(echo "$InputRecord" | cut -d"+" -f6-8)
					Create_DTE=`echo $Create_DTE | tr "+" " "`
					FormattedCreate_DTE=$(printf "%-12s" "$Create_DTE")

					File_NME=$(echo "$InputRecord" | cut -d"+" -f9)
					FormattedFile_NME=$(printf "%-40s" "$File_NME")

					echo "$Permissions_DSC $FormattedLinks_QTY $FormattedOwner_NME $FormattedGroup_NME $FormattedSize_QTY $FormattedCreate_DTE $FormattedFile_NME"
			fi
		done<$TempFile_NME

	# ****************************************************************
	# *
	# *	Calculate total space consumed by the specified directory
	# *
	# **********************************************+*****************

	echo   "                            --------"

	TotalSize_STR=`du -ks $FileSpecification | awk '{ print $1 }'`
	TotalSize_QTY=$(expr "$TotalSize_STR" ) # Convert to integer

	if (( TotalSize_QTY > 1073741824 ))
		then
			TotalSize_QTY=`echo "$TotalSize_QTY / 1073741824" | bc -l`
			FormattedTotalSize_QTY=$(printf "%4.1f" "$TotalSize_QTY")
			FormattedTotalSize_QTY="${FormattedTotalSize_QTY} T"
		else
			if (( TotalSize_QTY > 1048576 ))
				then
					TotalSize_QTY=`echo "$TotalSize_QTY / 1048576" | bc -l`
					FormattedTotalSize_QTY=$(printf "%4.0f" "$TotalSize_QTY")
					FormattedTotalSize_QTY="${FormattedTotalSize_QTY} G"
				else
					if (( TotalSize_QTY > 1024 ))
						then
							TotalSize_QTY=`echo "$TotalSize_QTY / 1024" | bc -l`
							FormattedTotalSize_QTY=$(printf "%4.0f" "$TotalSize_QTY")
							FormattedTotalSize_QTY="${FormattedTotalSize_QTY} M"
						else
							FormattedTotalSize_QTY=$(printf "%4.0f" "$TotalSize_QTY")
							FormattedTotalSize_QTY="${FormattedTotalSize_QTY} K"
					fi
			fi
	fi

	echo "                              $FormattedTotalSize_QTY (for $FileSpecification and its subdirectories)"

 

10 More Discussions You Might Find Interesting

1. Solaris

looking for different debugger for Solaris or to make sunstudio faster

im using the sunstudio but it is very slow , is there ant other GUI debugger for sun Solaris or at list some ways to make it faster ? im using to debug throw telnet connection connected to remote server thanks (0 Replies)
Discussion started by: umen
0 Replies

2. Shell Programming and Scripting

awk help to make my work faster

hii everyone , i have a file in which i have line numbers.. file name is file1.txt aa bb cc "12" qw xx yy zz "23" we bb qw we "123249" jh here 12,23,123249. is the line number now according to this line numbers we have to print lines from other file named... (11 Replies)
Discussion started by: kumar_amit
11 Replies

3. Red Hat

Re:How to make the linux pc faster

Hi, Can any one help me out in solving the problem i have a linux database server it is tooo slow that i am unable to open even the terminial is there any solution to get rid of this problem.How to make this server faster. Thanks & Regards Venky (0 Replies)
Discussion started by: venky_vemuri
0 Replies

4. Shell Programming and Scripting

How to make copy work faster

I am trying to copy a folder which contains a list of C executables. It takes 2 mins for completion,where as the entire script takes only 3 more minutes for other process. Is there a way to copy the folder faster so that the performance of the script will improve? (2 Replies)
Discussion started by: prasperl
2 Replies

5. Shell Programming and Scripting

Make script faster

Hi all, In bash scripting, I use to read files: cat $file | while read line; do ... doneHowever, it's a very slow way to read file line by line. E.g. In a file that has 3 columns, and less than 400 rows, like this: I run next script: cat $line | while read line; do ## Reads each... (10 Replies)
Discussion started by: AlbertGM
10 Replies

6. Shell Programming and Scripting

Making script run faster

Can someone help me edit the below script to make it run faster? Shell: bash OS: Linux Red Hat The point of the script is to grab entire chunks of information that concerns the service "MEMORY_CHECK". For each chunk, the beginning starts with "service {", and ends with "}". I should... (15 Replies)
Discussion started by: SkySmart
15 Replies

7. Shell Programming and Scripting

awk changes to make it faster

I have script like below, who is picking number from one file and and searching in another file, and printing output. Bu is is very slow to be run on huge file.can we modify it with awk #! /bin/ksh while read line1 do echo "$line1" a=`echo $line1` if then echo "$num" cat file1|nawk... (6 Replies)
Discussion started by: mirwasim
6 Replies

8. Shell Programming and Scripting

Optimize shell script to run faster

data.file: contact { contact_name=royce-rolls modified_attributes=0 modified_host_attributes=0 modified_service_attributes=0 host_notification_period=24x7 service_notification_period=24x7 last_host_notification=0 last_service_notification=0 host_notifications_enabled=1... (8 Replies)
Discussion started by: SkySmart
8 Replies

9. Shell Programming and Scripting

How to make awk command faster?

I have the below command which is referring a large file and it is taking 3 hours to run. Can something be done to make this command faster. awk -F ',' '{OFS=","}{ if ($13 == "9999") print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12 }' ${NLAP_TEMP}/hist1.out|sort -T ${NLAP_TEMP} |uniq>... (13 Replies)
Discussion started by: Peu Mukherjee
13 Replies

10. Shell Programming and Scripting

How to make faster loop in multiple directories?

Hello, I am under Ubuntu 18.04 Bionic. I have one shell script run.sh (which is out of my topic) to run files under multiple directories and one file to control all processes running under those directories (control.sh). I set a cronjob task to check each of them with two minutes of intervals.... (3 Replies)
Discussion started by: baris35
3 Replies
All times are GMT -4. The time now is 02:12 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy