I have a script to get the mail notification when any new file was created in a directory.
Now I want to redirect the data in another file which was uploaded.
below is the script which is creating a blank file. Please help.
#!/bin/bash monitor_dir="/home/deepak/deepak/" || "/home/deepak/deepak/ " email=deepaksharma@gmai.com files=$(find "$monitor_dir" -maxdepth 1 | sort) IFS=$'n' while true do sleep 1s newfiles=$(find "$monitor_dir" -maxdepth 1 | sort) added=$(comm -13 <(echo "$files") <(echo "$newfiles")) [ "$added" != "" ] && find $added -maxdepth 1 -printf '%Tct%st%pn' | mail -s "incoming" "$email" files="$newfiles" echo $files sleep 70s; read $files if [ -s /home/deepak/deepak/$files ] || [ -s /home/deepak/deepak/ $files ] then echo "$files found" cat /home/deepak/deepak/$files >/home/deepak/N || cat /home/deepak/deepak/ $files >/home/deepak/N else echo "$files not found" fi exit 0 done
Advertisement
Answer
@Yuvi, check tehe content of the $files
variable. Does it contain the full path of each file? If this is the case the reason why You are getting blank files may be because the “source” file does not exist.
e.g.
if $files
has value /home/deepak/deepak/file1.txt /home/deepak/deepak/file2.txt, then when You are doing the cat
after echo "$files found"
You will be doing it for unexisting files: /home/deepak/deepak//home/deepak/deepak/file1.txt
and /home/deepak/deepak//home/deepak/deepak/file2.txt
If this is the case You may solve Your problem by removing the leading path: cat $files >/home/deepak/N...