Can anyone make this script run faster?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Can anyone make this script run faster?
# 8  
Old 07-31-2008
Quote:
Originally Posted by shew01
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?

As has been pointed out already, avoiding external commands will speed up the script considerably.

I use this shell function to abbreviate numbers. The result is stored in $_ABBREV_NUM to avoid using command substitution for the result.
Code:
_abbrev_num() {
    case $1 in
        *.*) set -- ${1%%.*} ;;
    esac
    case ${#1} in
         1|2|3|4) _ABBREV_NUM=$1 ;;
             5|6) _ABBREV_NUM=$(( ($1 + 500) / 1000 ))K ;;
           7|8|9) _ABBREV_NUM=$(( ($1 + 500000) / 1000000 ))M ;;
        10|11|12) _ABBREV_NUM=$(( ($1 + 500000000) / 1000000000 ))G ;;
        13|14|15) _ABBREV_NUM=$(( ($1 + 500000000000) / 1000000000000 ))T ;;
        *) _ABBREV_NUM="HUGE" ;;
    esac
}

The same logic could be used in an awk function if you want to rewrite the entire script in awk.

Or you could install the GNU utilities. Often Solaris has them installed with a 'g' in front of the name, e.g., 'gls'.

# 9  
Old 07-31-2008
Quote:
Originally Posted by Annihilannic
This should do it.

Code:
ls -l | awk 'NF>=5 {tot+=$5}END {printf "%.f\n",tot}'

The NF>=5 is to skip the first line "total nnnn" which reports the number of 512 byte blocks used in the directory.
Yup. This works. Thanks!
# 10  
Old 07-31-2008
Quote:
Originally Posted by cfajohnson
Code:
_abbrev_num() {
    case $1 in
        *.*) set -- ${1%%.*} ;;
    esac
    case ${#1} in
         1|2|3|4) _ABBREV_NUM=$1 ;;
             5|6) _ABBREV_NUM=$(( ($1 + 500) / 1000 ))K ;;
           7|8|9) _ABBREV_NUM=$(( ($1 + 500000) / 1000000 ))M ;;
        10|11|12) _ABBREV_NUM=$(( ($1 + 500000000) / 1000000000 ))G ;;
        13|14|15) _ABBREV_NUM=$(( ($1 + 500000000000) / 1000000000000 ))T ;;
        *) _ABBREV_NUM="HUGE" ;;
    esac
}

This code looks very interesting. Can you post an example of how to call it?
# 11  
Old 08-01-2008
Quote:
Originally Posted by shew01
This code looks very interesting. Can you post an example of how to call it?
Code:
_abbrev_num 1234567890
abbreviated_number=$_ABBREV_NUM

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

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

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

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

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

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

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

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

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

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

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