#!/bin/bash
target=$1
param=$2
file_rules=$3
param2=$4
file_log=$5
par3=$6
if [ $2 != "-r" ] ; then #Проверяем параметр файла правил на валидность
echo "Параметр не задан или задан не верно"
exit
fi
if [ "$4" != "-l" -a -n "$4" ] ; then #Проверяем параметр логов на валидность
echo "Параметр задан не верно"
exit
fi
function parseFile {
cat $1 | while read line
do
#echo "$line"
IFS=' ' read -a array <<< "$line"
i=1
for element in "${array[@]}"
do
# echo "$element"
case "$i" in
"1")
fileName="-name ""\"$element\""
;;
"2")
replace="$element"
;;
"3")
if [ "$element" != "*" ] ; then
userName="-user ""$element"
else
unset userName
fi
;;
"4")
if [ "$element" != "*" ] ; then
group="-group ""$element"
else
unset group
fi
;;
"5")
if [ "$element" != "0" ] ; then
size="-size ""\"$element\""
else
unset size
fi
;;
esac
#items[i]="$element"
#Some actions
let i++
done
echo "find $2 -type f $fileName $userName $group $size -print"
find $2 -type f $fileName #$userName $group #$size -print
i=1
done
}
case "$6" in
"")
parseFile $3 $1
;;
"-c")
echo "param -c"
;;
"-ca")
echo "param -ca"
;;
*)
echo "Param is wrong"
;;
esac
# jpeg -> jpg
.jpeg .jpg user group 200
foto photo * * *
'file with spaces ' 'file_non_spaces_' * * *
$ ./massmv.sh ./files/ -r ./rules.txt -l ./log.txt
Перемещён: ./files/other_3.jpeg -> ./files/other_3.jpg
Перемещён: ./files/foto_6.jpeg -> ./files/foto_6.jpg
Перемещён: ./files/other_2.jpeg -> ./files/other_2.jpg
Перемещён: ./files/foto_8.jpeg -> ./files/foto_8.jpg
И т.д.
$ ./massmv.sh ./files/ -r ./rules.txt -l ./log.txt -c # cp
$ ./massmv.sh ./files/ -r ./rules.txt -l ./log.txt -ca # cp all
getopts
#!/usr/bin/env bash
RULES=default.txt
TOGGLEME=false
while getopts "r:f" arg; do
case $arg in
r) RULES=$OPTARG ;;
f) TOGGLEME=true ;;
*);;
esac
done
echo $RULES
find
для взаимодействия с файлами.