Sorting script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sorting script
# 8  
Old 07-11-2014
I don't know how you end up trying to move files with names ending in .mov when you're listing files with names ending in .mp4???

But, I'm guessing that this much simpler (and faster) version of your script will be much closer to what you're trying to do (working on both .mp4 and .mov files):
Code:
#!/bin/bash
srcdir="/source/dir"
destdir="/destination/dir"

cd "$srcdir"
ls -Tl *.mp4 *.mov | while read -r x x x x x filedirm filedir x fileyear filename
do
	if [ ! -d "$destdir/$fileyear/$filedirm/$filedir" ]
	then	mkdir -p "$destdir/$fileyear/$filedirm/$filedir"
	fi
	# move files 
	if [ ! -f "$destdir/$fileyear/$filedirm/$filedir/$fiename" ]
	then	mv "$filename" "$destdir/$fileyear/$filedirm/$filedir"
	fi
done

The key point is that when you have filenames containing whitespace characters, you have to quote them appropriately. Getting rid of all of the calls to awk and the problems created by trying to use awk to gather an unknown number of fields into the filename is handled by letting the read shell built-in do most of the work for you.

Last edited by Don Cragun; 07-11-2014 at 03:39 PM.. Reason: Add missing quotes around $srcdir.
This User Gave Thanks to Don Cragun For This Post:
# 9  
Old 07-11-2014
I have end up with mp4 because i have created test folder and copied mp4 files. mp4 is smaller few MB and mov are few GB and for testing is ok.
I will try your script and let you know if that is ok.
Thank you very much for your effort.

---------- Post updated at 05:29 PM ---------- Previous update was at 04:36 PM ----------

That is exactly what i needed Thanks again. Smilie
I just adapted to my needs because this script will use people that are not familiar with shell.

so if anyone need it here it is
Code:
#!/bin/bash

#source
echo -n "drag&drop source folder:"
read -e srcdir
#srcdir="/src/dir"

#destination
echo -n "drag&drop destination folder:"
read -e destdir
#destdir="/dst/dir

#File type
echo -n "file type:"
read -e ftype

cd "$srcdir"
ls -Tl *.$ftype | while read -r x x x x x filedirm filedir x fileyear filename
do
	if [ ! -d "$destdir/$fileyear/$filedirm/$filedir" ]
	then	mkdir -p "$destdir/$fileyear/$filedirm/$filedir"
	fi
	# move files 
	if [ ! -f "$destdir/$fileyear/$filedirm/$filedir/$fiename" ]
	then	mv "$filename" "$destdir/$fileyear/$filedirm/$filedir"
	fi
done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Problem with sorting in shell script

Hi, I have the following list: 42A 42AA 42B 42BB 42AAA 42BBB 49A 49AA 49B 49AAA 49BB I need it to be sorted as following: 42A 42B (2 Replies)
Discussion started by: sairamtejaswi
2 Replies

2. Homework & Coursework Questions

Shell Script: Sorting by column using grep/awk

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: You will write a script that will read a tab-separated file that contains the names of all 50 states &... (7 Replies)
Discussion started by: tburns517
7 Replies

3. Shell Programming and Scripting

Sorting lines based on keywords for MySQL script

the thing which i require is very very complex.. i tried hard to find the solution but couldnt.. the thing i need to achieve is say i have a file cat delta.sql CREATE VIEW Austin Etc etc . . . CREATE VIEW Barabara AS SELECT blah blah blah FROM Austin z, Cluster s, Instance i WHERE... (4 Replies)
Discussion started by: vivek d r
4 Replies

4. Shell Programming and Scripting

Multi level sorting script

I want to sort like below Suppose few lines in a file is like this systemid:ABC messagedestination:batchxpr replytoqname: myca systemid:BCD messagedestination:realtime replytoqname: myca systemid:ABC messagedestination:realtime replytoqname: eac systemid: BCD messagedestination:mqonline... (1 Reply)
Discussion started by: srkmish
1 Replies

5. Shell Programming and Scripting

Perl script for sorting out an input

<order>10.08.0</order> <order>11.02.0</order> <order>11.02.1</order> <order>11.02.2</order> <order>11.02.4</order> <order>11.02.5</order> <order>11.02.6</order> <order>11.04.0</order> <order>11.04.1</order> <order>11.04.2</order> ... (2 Replies)
Discussion started by: Tuxidow
2 Replies

6. Shell Programming and Scripting

Bourne Script, sorting and getting average of file

Hi I am trying to get a bourne shell script to sort a file for me. Here is what i currently have: #/bin/sh echo "Name Exam1 Exam2 Exam3 Total Grade" > final.txt awk -f 9.awk grades.txt | sort +4 -5 >> final.txt #BEGIN {printf "Name\tExam1\tExam2\tExam3\tTotal\tGrade";} { ... (12 Replies)
Discussion started by: DualPandas
12 Replies

7. Shell Programming and Scripting

Remove default data hash sorting in perl script?

Hi, I have a datahash with 'n' number of values in perl script. I am writing a xml file from the datahash. I am getting output with sorting(Field sorting). My question is that i don't want any default sorting.whatever i am inserting into datahash it should give same xml file. Any help? ... (0 Replies)
Discussion started by: solo123
0 Replies

8. Shell Programming and Scripting

Sorting Windows Directories using Korn script.

I have a directory called test, which contains multiple sub directories namely TF80A, TF80B, TF80C. I need to sort these directories by name, so in the above case TF80A Is the oldest and TF80C is the latest. Is there a ksh script that would loop through the directories and sort these... (1 Reply)
Discussion started by: amadhani
1 Replies

9. UNIX Desktop Questions & Answers

need unix script for sorting

Hi All, I am new to unix,please help me on the following its urgent I have 2 question 1 question I need a script for following senario I have get some files in directory by using grep i need to sort all files to new files for example (abc.dat --> abc.dat.sort) ex:grep *050508* ... (3 Replies)
Discussion started by: cgreddy2020
3 Replies

10. UNIX for Dummies Questions & Answers

Sorting in a script

Hello, I have a situation where I have filenames with timestamps like abc20060509452313.txt i need the most recent file, and i am using this command in the script: recent_file=`ls ${Location}/$file*| head -1` where $Location is the directory and $file is the base filename like abc. When i... (2 Replies)
Discussion started by: anujairaj
2 Replies
Login or Register to Ask a Question