I'm new with 'sed' and for sure something still I don't understand yet with it. If you see my output on ">Output..." portion, the new directory still on "source_dir" instead of "dest_dir". You may disregard for the "tar" part, this is just a test script, just for me to understand 'sed' using the Positional Parameters ($1 $2 $3..). Could you shed some light for me please? I really appreciate any help.
File contents (*.txt) in source folder (source_dir):
/home/test/scripts/sed/source_dir/file1/file1.txt
/home/test/scripts/sed/source_dir/file2/file2/file2.txt
/home/test/scripts/sed/source_dir/file3/file3/file3/file3.txt
Objective:
I want to compress all those *.txt files on a new directory "dest_dir" but with their own subdirectories (according to souce folder), like the output below:
/home/test/scripts/sed/dest_dir/file1/file1.txt
/home/test/scripts/sed/dest_dir/file2/file2/file2.txt
/home/test/scripts/sed/dest_dir/file3/file3/file3/file3.txt
My script:
#!/bin/sh
input_file_type="txt"
find $1 -name *.$input_file_type | sort | while read in_file
do
echo ">Input "$in_file
out_file=$(echo $in_file | sed 's/$1/$2/g')
echo ">Output "$out_file
tar -zcvf "$in_file" "$out_file"
done
My Output with the script:
[test@centoslab sed]$ ./zip_test ~/scripts/sed/source_dir/ ~/scripts/sed/dest_dir/
>Input /home/test/scripts/sed/source_dir/file1/file1.txt
>Output /home/test/scripts/sed/source_dir/file1/file1.txt <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
tar: Removing leading `/' from member names
/home/test/scripts/sed/source_dir/file1/file1.txt
>Input /home/test/scripts/sed/source_dir/file2/file2/file2.txt
>Output /home/test/scripts/sed/source_dir/file2/file2/file2.txt <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
tar: Removing leading `/' from member names
/home/test/scripts/sed/source_dir/file2/file2/file2.txt
>Input /home/test/scripts/sed/source_dir/file3/file3/file3/file3.txt
>Output /home/test/scripts/sed/source_dir/file3/file3/file3/file3.txt <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
tar: Removing leading `/' from member names
/home/test/scripts/sed/source_dir/file3/file3/file3/file3.txt
[test@centoslab sed]$