hmm .... meio que me senti um pouco mal por ter sido votado, eu tenho algo para você começar.
Eu li as regras e parece que você já tem uma descrição pronta sobre o que deve ser feito para qual arquivo ..... o script de exemplo a seguir usa esse descritor para determinar que ação deve ser executada e, em seguida, executar isso - os comandos mv e rm são comentados, eu estava usando echo para testar, descomente-os para obter a ação real)
código ::
Kaizen ~ / so_test / test $ cat ztest.sh
## remove header
sed -i '1d' zlst ;
:>ztmp ;
## loop to parse the file entries one by one
while read line
do
echo $line ;
file='echo $line | tr -s " " | cut -d" " -f2';
file='basename $file .ext' ; #3 used to filter a selection for action
echo $file ;
dir='echo $line | tr -s " " | cut -d" " -f2';
dir='basename $dir' ; #3 used to change the directory to where action is to be performed
cd $dir && echo $dir ;
grep -i $file zlst > ztmp ;
axn='echo $line | tr -s " " | cut -d" " -f4' ;
## case to select the course of axn
case $axn in
mv )
echo 'echo $line | tr -s " " | cut -d" " -f4-';
file='echo $line | tr -s " " | cut -d" " -f5' ;
old_name='grep -w "${file}" ztmp | cut -d" " -f2' ;
old_name='basename $old_name' ;
file='echo $line | tr -s " " | cut -d" " -f6' ;
new_name='grep -w "${file}" ztmp | cut -d" " -f2' ;
new_name='basename $new_name' ;
echo " mv $old_name $new_name ;" ;
#mv $old_name $new_name ;
## break ;;
;;
rm )
#file='echo $line | tr -s " " | cut -d" " -f4-';
echo "rm $file" ;
#rm $file ;
## break ;;
;;
* )
:
echo "do nothing " ;
#break ;;
;;
esac
##empty the tmp file
:> ztmp ;
done < zlst ## end the while loop @ EOF.
saída ::
Kaizen ~/so_test/test $ . ./ztest.sh
a. /path/to/dir1/FileName1.ext 0 rm
FileName1
rm FileName1
b. /path/to/dir1/FileName1_conflict-20130324-231953.ext 21624832 mv b a
FileName1_conflict-20130324-231953
mv b a
mv FileName1_conflict-20130324-231953.ext FileName1_conflict-20130324-231953.ext ;
c. /path/to/dir1/FileName1_conflict-20130326-080529.ext 21624832 rm
FileName1_conflict-20130326-080529
rm FileName1_conflict-20130326-080529
.ext
do nothing
a. /path/to/dir2/FileName2.ext 25432935 -
FileName2
do nothing
b. /path/to/dir2/FileName2_conflict-20130324-092544.ext 0 rm
FileName2_conflict-20130324-092544
rm FileName2_conflict-20130324-092544
c. /path/to/dir2/FileName2_conflict-20130326-212307.ext 25432935 rm
FileName2_conflict-20130326-212307
rm FileName2_conflict-20130326-212307
.ext
do nothing
a. /path/to/dir3/FileName3.ext 0 rm
FileName3
rm FileName3
b. /path/to/dir3/FileName3_conflict-20130324-214501.ext 23422234 mv b a
FileName3_conflict-20130324-214501
mv b a
mv FileName3_conflict-20130324-214501.ext FileName3_conflict-20130324-214501.ext ;
.ext
do nothing
a. /path/to/dir4/FileName4.ext 0 rm
FileName4
rm FileName4
b. /path/to/dir4/FileName4_conflict-20130324-110541.ext 14423 rm
FileName4_conflict-20130324-110541
rm FileName4_conflict-20130324-110541
c. /path/to/dir4/FileName4_conflict-20130326-030512.ext 25432935 mv c a
FileName4_conflict-20130326-030512
mv c a
mv FileName4_conflict-20130326-030512.ext FileName4_conflict-20130326-030512.ext ;
Por favor, note : para a verificação de tamanho, eu não incluí isso no código, uma simples condição se no loop while vai fazer .... você precisará adicionar isso embora.
espero que isso ajude !!