Script to move .300 extension file from 1 dir to other and email


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script to move .300 extension file from 1 dir to other and email
# 1  
Old 06-03-2015
Script to move .300 extension file from 1 dir to other and email

Hi,

I am looking for a shell script which move .300 extension files from /home/sofia/ to /home/sofia/test and sends me an email with the list of files moved like this :-

Code:
The following files has been moved from /home/sofia/ to /home/sofia/test

1. alpha.300
2. beta.300

Email only if the file exists and moved and also sends an error message if some reason it cannot move(errors).Please help.Appreciate your help.

---------- Post updated at 01:49 PM ---------- Previous update was at 01:25 PM ----------

Code:
#!/usr/bin/env bash
FROM_DIR='/home/zaree'
TO_DIR='/home/zaree/test'

FILE_FOUND=0

BODY=$(printf "$(date)\n\n")
BODY+=$(printf "The following files have been moved from\n")
BODY+=$(printf "%s\nto\n%s\n\n" "$FROM_DIR" "$TO_DIR")

for FILE in /home/zaree/*.beta; do
                FILE_FOUND=1
        mv $FILE /home/zaree/test
        BODY+=$(printf "%s moved\n" "$FILE");
done

{
if (( $FILE_FOUND==1 )); then
        printf  "$BODY"
fi
} | mailx -s "Dev-Script" zaree@xyz.com

Moderator's Comments:
Mod Comment Please use CODE tags for sample input, output, and code segments.

Last edited by Don Cragun; 06-03-2015 at 04:34 PM.. Reason: Add CODE tags.
# 2  
Old 06-03-2015
Try replacing
Code:
zaree/*.beta

with
Code:
zaree./*.300

. HTH
# 3  
Old 06-03-2015
Hi Sofia and welcome to the forums.
For future posts, please use the code tags (the icon with the letters code) for multiline code blocks, as you agreed by the forum rules.

How do the files look like? - What is their name?
{alpha,beta}.300 or 300.{alpha,beta}?

hth

edit: oh there's been one faster
# 4  
Old 06-03-2015
when i run the command i donot get the format i wanted.
I am looking for this format
Code:
The following files has been moved from /home/zaree to /home/zaree/test
1. a.beta
2. b.beta

sea-->the file are in /home/zaree directory like this /home/zaree/a.beta

---------- Post updated at 02:13 PM ---------- Previous update was at 02:07 PM ----------

i tried another code which worked on one server but other -E flag erroring out.
Code:
#!/usr/bin/env bash
#using "shopt -s nullglob" so that an empty directory won't give you a literal '*'
shopt -s nullglob #to make `("$src_dir"*.271)` works
src_dir="/home/zaree/ " 
dest_dir="/home/zaree/test/"
#manually remove both /tmp/error.txt and /tmp/moved.log which will append from time to time.
err_f="/tmp/error.txt"
mv_f="/tmp/moved.log" #record moved file in case network down
email="zaree@xyz.com"
export replyto="<noreply@xyz.com>"
touch "$err_f" #bcoz we use >> apppend
touch "$mv_f" #bcoz we use tee -a append

#mailx only one if mv encounter error, by using break to break early instead of exit 1
#because we still want to know which file has been moved before error occur.
if [ ! -d "$src_dir" ]; then echo|mailx -s "Error: directory $src_dir not exist" "$email" 2>>"$err_f"; exit 1; fi
if [ ! -d "$dest_dir" ]; then echo|mailx -s "Error: directory $dest_dir not exist" "$email" 2>>"$err_f"; exit 1; fi
{
f=("$src_dir"*.beta)
for ((i=0; i < ${#f[@]}; i+=1)); do
        mv -f "${f[i]}" "$dest_dir"  2>>"$err_f"; #-f do not prompt
#Advantage of cmd; if [ $? -eq 0 ] compare to implicitly if cmd is you can easily modify it
#to some other command which might require different return code.
        if [ $? -eq 0 ]; then
                if [ "$i" -eq 0 ]; then echo "$(date +"%Y-%m-%d %H:%M:%S")"; echo "The following files has been moved from $src_dir to $dest_dir"; echo; fi
                echo "$((i+1))." "$(basename "${f[i]}")" ; echo;
        else
                 echo| mailx -s "Error:  $(<"$err_f")" "$email" 2>>"$err_f"; break
        fi
done

#mailx -E to avoid empty body, so it wouldn't sent if no file moved
} | tee -a "$mv_f" | mailx -E -s "File move Script" "$email" 2>>"$err_f"


Last edited by Don Cragun; 06-03-2015 at 04:35 PM.. Reason: Change ICODE tags to CODE tags and add CODE and ICODE tags.
# 5  
Old 06-03-2015
code tags, not icode.

---------- Post updated at 22:08 ---------- Previous update was at 21:21 ----------

Quote:
Originally Posted by sofia8679
when i run the command i donot get the format i wanted.
I am looking for this format
Code:
The following files has been moved from /home/zaree to /home/zaree/test
1. a.beta
2. b.beta

So it is about catching multiple items of with beta extension, and why did you name it 300 extension?

As already been mentioned by wport, make the name-sheme of the actual files, and what is used in the code, the same.

How about:
Code:
#!/usr/bin/env bash
#
#	Variables
#
	shopt -s nullglob #to make `("$src_dir"*.271)` works
	# Dirs
	src_dir="/home/zaree/ " 
	dest_dir="/home/zaree/test/"
	# Files
	err_f="/tmp/error.txt"
	mv_f="/tmp/moved.log" #record moved file in case network down
	# email
	email="zaree@xyz.com"
	replyto="<noreply@xyz.com>"
	BODY=""
	date_string="$(date +'%Y-%m-%d %H:%M:%S')"
	# bools
	dont_move=false
#
#	Preparations
#
	touch "$err_f" "$mv_f"
	if [ ! -d "$src_dir" ] || [ ! -d "$dest_dir" ]
	then	BODY="Error: One or both directory $src_dir/$dest_dir does not exist"
		echo "$BODY" | tee -a "$err_f" 
		dont_move=true
		BODY+"\n"
		#exit 1
	fi
#
#	Get files
#
	if ! $dont_move
	then	files_array=("$src_dir"*.beta)
		for thisFile in "${files_array[@]}"
		do
			mv -f "thisFile" "$dest_dir" 2>>"$err_f"
			if [ 0 -eq $? ]
			then	msg="Successfully moved"
			else	msg="Failed to move"
			fi
			msg="$msg $thisFile"
			echo "$msg" | tee -f $mv_f
			BODY+="$msg\n"
		done
	fi
#
#	Send the mail
#
	echo| mailx -s "$BODY" "$email" 2>>"$err_f"

Hope this helps (hth)
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove bad records from file and move them into a file then send those via email

Hi my requirement is that i want pull the bad records from input file and move those records in to a seperate file. that file has to be sent via email.. any suggentions please (1 Reply)
Discussion started by: sxk4999
1 Replies

2. Shell Programming and Scripting

Script to move all files in a dir into a certain dir

Hello all, I'm very new to shell scripting and need quite urgently to do this thing for my student job. I have a directory called "vectors" with a bunch of files all named ".vector". also i have for each of those files a directory with the name . I now want to move each of those *.vector files... (2 Replies)
Discussion started by: sherresh
2 Replies

3. Shell Programming and Scripting

Move all files from dir and subdir to Archive with File name as complete path_filename

HI, I need to move all files from a dir & its all subdir to Archive folder which is indise dir only. and moved filename should changed to complete path ( Like Dir_subdir_subdir2_.._filename ). also all files names shoud capture in a file in order to mail I written below code ... (11 Replies)
Discussion started by: minijain7
11 Replies

4. Cybersecurity

Inquiry of .awo hidden dir with bin file inside .eeesync extension

Hi, Me i ask if someone knows about this hidden directory or it me knows where this dir associated with or in a program. I had and notices this .awo dir with bin files inside title 6770669_info.eeesync files in my directory. I wonder if this is associated with my backup program or any program... (0 Replies)
Discussion started by: jao_madn
0 Replies

5. Shell Programming and Scripting

Need a script to move the files from one dir to other other dir

Need a script to move the files from one dir to other dir and at the same time it has to read the log in the source dir. Please help me ASAP. (4 Replies)
Discussion started by: viswanathkishor
4 Replies

6. Shell Programming and Scripting

Help - Script to move files to subdir depending on file extension.

Hi, First off I'm pretty new to scripting so please be gentle. I am looking for some help with a script that will move all files with a certain extension into a folder within their current location. Just for clarity I have all my photos organised in directories such as: ... (4 Replies)
Discussion started by: guinch
4 Replies

7. Shell Programming and Scripting

need to move files of particular day from one dir to another dir

Hi, I have hundered's of files of the name CMP_PORT_IN_P200903271623042437_20090328122430_err.xml in error directory of todays date ie 20090328 and in the file name 5th field specifies date only now i want to move all files of 20090328 to another directory i.e reprocess directory. So... (3 Replies)
Discussion started by: ss_ss
3 Replies

8. Shell Programming and Scripting

Help with script, trying to get tcpdump and rotate the file every 300 seconds

Greetings, I just started using scripting languages, im trying to get a tcpdump in a file, change the file name every 5mins ... this is what i have but its not working ... any suggestions? #!/bin/bash # timeout.sh #timestamp format TIMESTAMP=`date -u "+%Y%m%dT%H%M%S"` #tdump =`tcpdump... (3 Replies)
Discussion started by: livewire
3 Replies

9. UNIX for Dummies Questions & Answers

Move A File With Same Date,don't Change The Desitination Dir Date

Assume, I created one file three years back and I like to move the file to some other directory with the old date (Creation date)? Is it possible? Explain? (1 Reply)
Discussion started by: jee.ku2
1 Replies
Login or Register to Ask a Question