Код:
#!/bin/bash
#
#6). Да се напише скрипт, който може да изпълнява произволна команда върху
# всички файлове и/или директории под дадена директория (рекурсивно).
# Необходимо е да се поддържат следните опции на командния ред:
# -f - командата се изпълнява върху файлове
# -d - командата се изпълнява върху директории
# -c - команда, която да се изпълни
# Пример:
# ./script.sh -d -f -c touch /home/pesho/public_html
# Приема се, че файловете или директориите са безкрайно много, за това тряба
# да се използват командите find и xargs
#Check for arguments and enable the features
FILE_ENABLE=0
DIR_ENABLE=0
COMMAND=0
usage()
{
cat << EOF
usage: $0 options
./script.sh -d -f -c touch /home/pesho/public_html
OPTIONS:
-f Exec on files only
-d Exec on directories only
-c Command (Ex: touch /home/pesho/public_html)
-h This help
EOF
}
if [ $# -lt 3 ] ; then
echo "Wrong param input, need at least 3 params"
exit 0;
else
for arg in "$@"
do
case "$arg" in
-f) FILE_ENABLE=1
EXEC_TYPE="f"
shift
;;
-d) DIR_ENABLE=1
EXEC_TYPE="d"
shift
;;
-c) COMMAND=1
EXEC=$2
DIR=$3
;;
-h) usage
exit 0;
;;
esac
done
fi
if [ $COMMAND -eq 0 ]; then
echo "No -c command specified"
usage
exit 1;
fi
if [ $FILE_ENABLE -eq 1 ] && [ $DIR_ENABLE -eq 1 ]; then
DIR_ENABLE=0
FILE_ENABLE=0
fi
if [ $FILE_ENABLE -eq 0 ] && [ $DIR_ENABLE -eq 0 ]; then
echo "find $DIR -maxdepth 1 -exec $EXEC {} \;"
find $DIR -maxdepth 1 -exec $EXEC {} \;
else
echo "find $DIR -maxdepth 1 -type $EXEC_TYPE -exec $EXEC {} \;"
find $DIR -maxdepth 1 -type $EXEC_TYPE -exec $EXEC {} \;
fi
echo DONE
exit 0;
Ето едно кодче, със сигурност ще ви хареса. Може още малко по - добре да се донаправи, но като за без пари е отлично. Ай като станете шефове може да ме викнете
