Visit Our UNIX and Linux User Community


Script to sort the files and append the extension .sort to the sorted version of the file


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Script to sort the files and append the extension .sort to the sorted version of the file
# 1  
Old 06-07-2011
Script to sort the files and append the extension .sort to the sorted version of the file

Hello all -
I am to this forum and fairly new in learning unix and finding some difficulty in preparing a small shell script. I am trying to make script to sort all the files given by user as input (either the exact full name of the file or say the files matching the criteria like all files having which starts with say ZEB*). Then script should find all those files based on matching criteria and append the extension .sort to the sorted version of the file whilst retaining the original version of the file. Script should not sort files in sub-directories, only the top level directory it is run from.
This piece of code line is working for me but it does sort all the files present in that path/location.

find * -prune -type f |grep -v .sort| while read file
do
sort "$file" > "$file".sort
done

I want some user friendly shell script which ask user to enter the path location where all files exists and than enter either the exact file name or pattern to search the files in that location and sort only on those files enter by user as input.

Kindly help me ..
# 2  
Old 06-07-2011
The find command is unsuitable for what you are trying to do, plain shell expansion of the pattern (or * if no pattern) is a better option
Code:
#!/bin/bash

if [ "X$1" = "X" ]
then
   pattern='*'
else
   pattern="$1"
fi
for file in $pattern
do
   if [ -f $file ]
   then
      sort "$file" > "$file".sort
   fi
done

If that fails to work for you, perhaps you aren't quoting your pattern and as a result the expansion is happening outside your script'
ie. call it like so
Code:
bash ~/tmp/sorter.sh 'file*'

or in the case of your script above
Code:
find \* -prune -type f ......


Last edited by Skrynesaver; 06-07-2011 at 10:05 AM.. Reason: Added advice on shell expansion
This User Gave Thanks to Skrynesaver For This Post:
# 3  
Old 06-07-2011
Hi

Hi Skrynesaver

I copied the code suggested by you but it actually sorting all the file and not asking user to enter specific file or file pattern and than sorting only those files. Can you pls amend the script so it sort only the selective files and not all placed in that location. Your help is much appreaciated.
# 4  
Old 06-07-2011
Quote:
Originally Posted by pankaj80
Hi Skrynesaver

I copied the code suggested by you but it actually sorting all the file and not asking user to enter specific file or file pattern and than sorting only those files. Can you pls amend the script so it sort only the selective files and not all placed in that location. Your help is much appreaciated.
As stated above. it takes a pattern as an argument and uses shell expansion to provide a list of filenames as the argument to the sort command in the for loop.
ie
sorter.sh '*.txt'
or
sorter.sh \*.data

would use the pattern povided

Previous Thread | Next Thread
Test Your Knowledge in Computers #671
Difficulty: Medium
DOS primarily consists of Microsoft's MS-DOS and a rebranded IBM version under the name PC DOS, both of which were introduced in 1981.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Bash script to sort files

I've got a disorganized list of items and quantities for each. I've been using a combination of grep and sort to find out how much to buy of each item. I'm tired of having to constantly using these commands so I've been trying to write a shell script to make it easier, but I can't figure out how... (3 Replies)
Discussion started by: PTcharger
3 Replies

2. Shell Programming and Scripting

UNIX compare, sort lines and append difference

To make it easier, i gave following example. It is not homework or classwork. Instead, i have a huge csv file dump from tsql with 15 columns and around 300 rows. I was able to extract content that needs to be really converted. Here is the extract: ES FP,B1ES FP,70000,I,SL22,SL22 (70000) ES... (8 Replies)
Discussion started by: nike27
8 Replies

3. Shell Programming and Scripting

UNIX compare, sort lines and append difference

To make it easier, i gave following example. It is not homework or classwork. Instead, i have a huge csv file dump from tsql with 15 columns and around 300 rows. I was able to extract content that needs to be really converted. Here is the extract: ES FP,B1ES FP,70000,I,SL22,SL22 (70000) ES... (0 Replies)
Discussion started by: nike27
0 Replies

4. Shell Programming and Scripting

Sort help: How to sort collected 'file list' by date stamp :

Hi Experts, I have a filelist collected from another server , now want to sort the output using date/time stamp filed. - Filed 6, 7,8 are showing the date/time/stamp. Here is the input: #---------------------------------------------------------------------- -rw------- 1 root ... (3 Replies)
Discussion started by: rveri
3 Replies

5. Shell Programming and Scripting

Sort a line and Insert sorted word(s) in a line

Hello, I am looking to automate a task - which is updating an existing access control instruction of a server and making sure that the attributes defined in the instruction is in sorted order. The instructions will be of a specific syntax. For example lets assume below listed is one of an... (6 Replies)
Discussion started by: sanjayroc
6 Replies

6. Shell Programming and Scripting

Advanced: Sort, count data in column, append file name

Hi. I am not sure the title gives an optimal description of what I want to do. Also, I tried to post this in the "UNIX for Dummies Questions & Answers", but it seems no-one was able to help out. I have several text files that contain data in many columns. All the files are organized the same... (14 Replies)
Discussion started by: JamesT
14 Replies

7. Shell Programming and Scripting

How to sort version numbers?

I would like to know how to sort version numbers, using bash or perl. I would like to sort file names that are program names with version numbers and extensions, such as hello-0.2.3.tar.gz and hello-0.10.3.tar.gz. Version numbers of computer programs do not comply with the mathematical rule... (3 Replies)
Discussion started by: LessNux
3 Replies

8. Shell Programming and Scripting

sort the files based on timestamp and execute sorted files in order

Hi I have a requirement like below I need to sort the files based on the timestamp in the file name and run them in sorted order and then archive all the files which are one day old to temp directory My files looks like this PGABOLTXML1D_201108121235.xml... (1 Reply)
Discussion started by: saidutta123
1 Replies

9. Shell Programming and Scripting

Remove lines, Sorted with Time based columns using AWK & SORT

Hi having a file as follows MediaErr.log 84 Server1 Policy1 Schedule1 master1 05/08/2008 02:12:16 84 Server1 Policy1 Schedule1 master1 05/08/2008 02:22:47 84 Server1 Policy1 Schedule1 master1 05/08/2008 03:41:26 84 Server1 Policy1 ... (1 Reply)
Discussion started by: karthikn7974
1 Replies

10. UNIX for Dummies Questions & Answers

How to Replace,Sort,and Append Character one script

Hi all i am very new to shell scripting,hope u guys can help i need to replace,sort and append character for the file that look like this: 1007032811010001000100000001X700026930409 1007032811010001000200000002X700026930409 1007032711020001000300000003X700026930409... (2 Replies)
Discussion started by: ashikin_8119
2 Replies

Featured Tech Videos