Shell script: returning the file with the most lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell script: returning the file with the most lines
# 1  
Old 05-16-2009
Shell script: returning the file with the most lines

Hey I am relatively new to Linux and shell scripting, looking for a spot of help with a script I am working on.

I am writing a script that counts the number of lines in all the files in a directory, sorts them by line number and then returns ONLY the file with the most lines.

Right now I can accomplish the first part with
Code:
wc -l|sort -rn

but I do not know how to return only the file with the most lines in the output.
# 2  
Old 05-16-2009
Code:
wc -l | sort -rn | head -1

# 3  
Old 05-17-2009
Thanks!

That almost does what I need, but since the first line of the sorted list is a total line count, it displays 'Total XXX' instead of the actual file.

Is there any command I can use to pass a condition that will display the file with the most lines based on the actual number of lines rather than the position on the list? I was also considering using some PERL, but I am still new to that as well. Thanks again.


Edit:

I also found that
Code:
wc -l | sort -rn | head -2 | tail -1

will give me the result I want, just not the method I prefer.

Last edited by Breakology; 05-17-2009 at 03:10 AM..
# 4  
Old 05-17-2009
if you have Python, here's an alternative solution
Code:
#!/usr/bin/env python
import os
temp=0
path=os.path.join("/home","path1","path2")
for r,d,f in os.walk(path):
    for files in f:
        i=0
        try:
            o=open( os.path.join(r,files) )        
        except Exception:pass            
        else:
            for lines in o: i=i+1 #count lines
            o.close()
            if i>=temp: temp=i; final = os.path.join(r,files)
print "File ", final, " has " ,temp ," lines"

output:
Code:
File  /home/path1/path2/file  has  13545528  lines

# 5  
Old 05-17-2009
Quote:
Originally Posted by Breakology
I also found that
Code:
wc -l | sort -rn | head -2 | tail -1

will give me the result I want, just not the method I prefer.
you sure that will give you results? you have not provided arguments to wc -l
# 6  
Old 05-17-2009
Quote:
Originally Posted by Breakology
That almost does what I need, but since the first line of the sorted list is a total line count, it displays 'Total XXX' instead of the actual file.

Don't use ls:

Code:
wc -l * | sort -rn | head -1

# 7  
Old 05-17-2009
using wc -l * has the problem of wc'ing the directories as well... so the final output will not be accurate.
Code:
find . -type f -exec wc -l {} \;| sort -rn |head -1

however, for many files, the sort can slow down the process.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Control not returning from Sqlplus to calling UNIX shell script.

Hello All, I have exactly same issue @vikas_trl had in following link: https://www.unix.com/shell-programming-and-scripting/259854-control-not-returning-sqlplus-calling-unix-shell-script.html I wonder if he or somebody else could find the issue's cause or the solution. Any help would... (4 Replies)
Discussion started by: RicardoQ
4 Replies

2. Shell Programming and Scripting

Control not returning from Sqlplus to calling UNIX shell script.

Hello All, I have a UNIX script which will prepare anonymous oracle pl/sql block in a temporary file in run time and passes this file to sqlplus as given below. cat > $v_Input_File 2>>$v_Log << EOF BEGIN EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL DML PARALLEL 16'; EXECUTE... (1 Reply)
Discussion started by: vikas_trl
1 Replies

3. UNIX for Dummies Questions & Answers

Shell script to read lines in a text file and filter user data Shell Programming and Scripting

sxsaaas (3 Replies)
Discussion started by: VikrantD
3 Replies

4. Shell Programming and Scripting

Returning to shell from previous script

Found myself stuck on this seemingly trivial issue. I have this script which call other shell files to do their deeds. The shell files in turn call some other programs as well. My problem is that in two of these shell files, the control doesnt return to next command in script unless the Enter key... (2 Replies)
Discussion started by: DoesntMatter
2 Replies

5. Shell Programming and Scripting

shell script returning error code 2 from AIX to Mainframe

Hi, I have a shell script which is residing on AIX which is triggered by Mainframe through Connect Direct. The shell script creates several files and sends those files to mainframe using Connect Direct. The shell script is working fine, still it is returning exit code 2 to mainframe. What... (0 Replies)
Discussion started by: Yogesh Aggarwal
0 Replies

6. AIX

The shell script is not returning proper result

Can anybody pls look into this script and tell me where I went wrong. After running this script, it is showing like "Trying to overlay current working directory ABORT!!!" :-( ARGCNT=$# if then echo "Two parameters are needed for this shell " echo "Please try again with... (1 Reply)
Discussion started by: clnsharma123
1 Replies

7. Programming

Returning Strings from C program to Unix shell script

Hi, I'm having a requirement where I need to call a C program from a shell script and return the value from the C program to shell script. I refered a thread in this forum. But using that command in the code, it is throwing an error clear_text_password=$(get_password) Error: bash:... (24 Replies)
Discussion started by: venkatesh_sasi
24 Replies

8. Shell Programming and Scripting

returning to the parent shell after invoking a script within a script

Hi everybody, I have a script in which I'm invoking another script which runs in a subshell. after the script is executed I want to return to the parent shell as some variables are set. However i'm unable to return to my original shell as the script which i'm calling inside is invoked in... (5 Replies)
Discussion started by: gurukottur
5 Replies

9. Programming

Returning Strings from C program to Unix shell script

Hi, Iam calling a C program from a Unix shell script. The (C) program reads encrypted username/password from a text file , decrypts and returns the decrypted string. Is there any way i can return the decrypted string to Unix shell program. My shell script uses the output of the program to... (11 Replies)
Discussion started by: satguyz
11 Replies

10. Shell Programming and Scripting

Returning Values (shell Script)

I have an application on Informix 4GL, and I am invoking the shell script from the program, but I need to know if the shell script work fine or not, in order to continue the process. I know that we can use $? to get the final status but this is on unix command. How can I return a value from the... (3 Replies)
Discussion started by: jennifer01
3 Replies
Login or Register to Ask a Question