Help with lsting maxlines script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with lsting maxlines script
# 1  
Old 09-25-2010
Help with lsting maxlines script

I have a script to look at a directory and only a directory to evaluate which file in that directory has the most lines and then to print What file and how many lines. Being new to this style of scripting I can't get the code right to do this. I have the first part correct to determine if it is a directory and only one directory but I am having trouble with the script finding the file with the most lines and displaying the file and count.

here is my code:

Code:
ERROR1="error: can only use 0 or 1 arguments.\nusage: maxlines.sh [directory]"
ERROR2="error: argument must be a directory.\nusage: maxlines.sh [directory]\n"
# Verify that more than one command line argument doesn't exist.
if [[ $# -gt 1 ]]
        then
                printf "$ERROR1"
                exit 1
fi
# Set the DIR variable to default to the current directory.
DIR="."
# Case #2 and 3.
# The number of arguments on the command line equals one.
if [[ $# -eq 1 ]]
        then
                # Is the directory entry a directory?
                if [[ -d $1 ]]
                        then
                        # Assign the command line argument to the variable, DIR.
                                DIR="$1"
                else
                        printf "$ERROR2"
                        exit 1
                fi
fi
# All case are processed with the following code.
# Change directory to the indicated variable content.
cd $1
# Assign file name with highest number of new lines to the variable FILE.
FILE=$(wc -l `ls` 2>/dev/null| sort -u | tail -5 | head -5)
# Print statement for all cases.
printf "File `echo $FILE | awk '{print $1}'` has the maximum lines with `echo $wc -l| awk '{print $1}'` lines.\n"
exit 0

Any advice would be appreciated.
# 2  
Old 09-25-2010
A couple of things...

1) You don't need head -5

2) I'd grep -v total and use tail -1 to determine the file with the largest number of files. Something like this:

Code:
x=$(wc -l $(ls) |sort|grep -v total|tail -1)
echo "${x##* } is the largest file having  ${x%%* } lines"

The ${x##* } truncates all characters to the last space (leaving just the filename). The ${x%%* } truncates all characters after the space leaving the number of lines.

You could do it a bit more straight forwardly in Ksh, but this should work in bash too.

This may have issues if there are non-regular files in the directory.

Last edited by agama; 09-25-2010 at 09:21 PM.. Reason: typo
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question