Suppose you have two folders /home/sangram/Music & /home/sangram/Music/Other,
In Music Folder you only want to keep mp3 files directly.The Other folder
contain multiple folders each containing mp3 files for different Song Album.
Here instead of directly copying mp3 to 'Music' folder i created another folder
in 'Music' folder to collect all such files named 'AllSongs'.
Then following script will copy all mp3 files from Album folders to mp3.It does
not implement nested folder scenario.Code is Bash Script that can be run as
Assume code file name is OrganizeMusicFiles.sh then you need to base folder of
it to make it executable run
chmod +x OrganizeMusicFiles.sh
Then run script as follows
./OrganizeMusicFiles.sh
Code:
/bin/bash
search_dir=/home/sangram/Music/Other
dest_dir=/home/sangram/Music/AllSongs/
echo "Search Directory: $search_dir"
echo "Destination Directory: $dest_dir"
echo "--------------------------------"
touch CopyLog.psv
echo "source|destinaion|time" > CopyLog.psv;
counter=0
break_flag=0
for entry in "$search_dir"/*; do
echo "--------------Folder:$entry------------------"
for inner_entry in "$entry"/*; do
echo "File under consideration is: $inner_entry"
#get file extension
filename=$(basename -- "$inner_entry")
extension="${filename##*.}"
echo "File Extension: $extension"
desired_extensions=("mp3")
if [[ ${desired_extensions[@]} =~ $extension ]]
then
echo "File $inner_entry is mp3"
else
echo "File $inner_entry is not mp3"
continue
fi
echo "Coping File:'$inner_entry' To '$dest_dir'"
echo "cp '$inner_entry' '$dest_dir'"
#logging the copy operation
current_date_time="`date +%Y%m%d%H%M%S`";
echo "'$inner_entry'|'$dest_dir'|'$current_date_time'" >> CopyLog.psv;
echo "\n" >> CopyLog.psv;
cp "$inner_entry" '$dest_dir'
counter=$((counter+1))
#coping only 10 files
if [ $counter -eq 10 ]
then
$break_flag=1
break
fi
echo '--------------------------------'
done
#if inner loop is broken then break outer loop also broken
if [ $break_flag -eq 1 ]
then
break
fi
echo "Total Files Copied: $counter"
break
done
I think the code might useful for someone which trying to something similar
for sake of fun.
Happy Coding !
No comments:
Post a Comment