On Samstag, 3. Januar 2004 13:33, frank paulsen wrote: Hallo Frank,
> ich habe ein verzeichnis mit ein paar GB bildchen, die ich aus
> abpr gesaugt habe, fein saeuberlich auf DVD-groesse abgestimmt.
>
> fuer einen bekannten moechte ich das jetzt auf mehrere CD
> brennen, nur fehlt mir die kroenende idee, wie ich das jetzt auf
> unterverzeichnisse mit jeweils etwa 650MB aufteile.
daran bastle ich auch gerade. Ist wohl noch nicht perfekt, aber
vielleicht kannst Du damit ja was anfangen. Ist auch nochmal als
Anhang dran. Vielleicht kann mir ja jemand einen Tipp geben, warum
die erste Datei zum Schluss nocheinmal kopiert wird, momentan sehe
ich wohl den Wald vor lauter Baeumen nicht mehr.
Man kann jetzt als Argumente uebergeben:
1. die maximale Groesse in k der zu kopierenden Datei(en)
2. die minimale Groesse in k der zu kopierendenDatei(en)
3. die maximale Groesse in k der jeweiligen neuen Verzeichnisse
4. die Gesammtgroesse in k der zu kopierendenDatei(en)
5. die Anzahl der zu kopierenden Datei(en)
6. das Verzeichnis in dem die zu kopierenden Dateien sind
7. das Zielverzeichnis der zu kopierenden Dateien
###BEISPIEL
./files_to_catch_v1.2.sh 10 1 10 100 100 ~ TEST;
###
Ich habe es auch noch als tar.gz-Datei angehaengt.
###- BEGINN von files_to_catch_v1.2.sh-##############
#!/bin/bash
#set -x;
clear;
if [ "$#" -ne 7 ] || [ "$1" = "-h" ]; then
echo "
"
echo "files_to_catch_v1.2.sh - Copyrights 2003 by Thomas
Ulrich
Nockmann - [EMAIL PROTECTED]
"
echo "Usage: files_to_catch.sh <max sizes of files> <min
sizes of
files> <sizes of directories> <summary of filesizes> <number of
files> <Path to find> <Path to copy to> ";
echo "Example: ./files_to_catch_v1.2.sh 10 1 10 100 100 ~
TEST;"
echo "Type './files_to_catch_v1.2.sh -h' to get this help."
echo "
"
exit;
fi
OK="";
z=1;
for i in $1 $2 $3 $4 $5;do
OK=`echo $i | gawk '/^[[:digit:]]+/&& !/.*[[:alpha:]]+.*/&&
!
/.*[[:punct:]]+.*/ {print "OK";}'`;
#OK=`echo $i | awk '/^[[:digit:]]+/&& !/.*[[:alpha:]]+.*/
{print
"OK";}'`;
#echo $i $OK $z
if [ -z "${OK}" ];then
#if [ -z "${OK}" ];then
case $z in
1) NUMBER_OF_ARGUMENT="first";;
2) NUMBER_OF_ARGUMENT="second";;
3) NUMBER_OF_ARGUMENT="third";;
4) NUMBER_OF_ARGUMENT="fourth";;
5) NUMBER_OF_ARGUMENT="fifth";;
esac
echo "Please put an integer value into the "
${NUMBER_OF_ARGUMENT} " argument.";
exit;
fi
OK=""
z=`expr $z + 1`
done
#rm -rf TEST;
if [ -d "${7}" ];then
DECISION="n";
echo "
";
echo "Directory '$7' exists with tho following contents.";
ls -Alh "${7}"/*;
echo "
";
echo "Shell I remove it all and do continue?(y/n)"
read DECISION
if [ "${DECISION}" = "y" ];then
rm -rf "${7}"/*
echo ""
else
echo "The programm is interrupted by the
user."
echo "EXIT"
exit
fi
if [ $? -eq 0 ];then
cd "${7}"
fi
else
DECISION="n"
echo "
";
echo "Directory '$7' does not exist.";
echo "Shell I create it?(y/n)"
read DECISION
if [ "${DECISION}" = "y" ];then
mkdir "${7}"
if [ $? -eq 0 ];then
cd "${7}"
fi
else
echo "The programm is interrupted by the user."
echo "EXIT"
exit;
fi
fi
echo "
";
SUMMARY_OF_FILES=0;
SUMMARY_OF_FILES_FOR_EACH_DIRECTORY=0;
SIZE_OF_FILES=0;
NUMBER_OF_FILES=0;
NUMBER_OF_FILES_TO_GET=$5;
ADD_TO_NUMBER_OF_FILES_ALLOWED="TRUE";
COUNT_FILES=0;
typeset -i MAX_SIZE=$1;
typeset -i MIN_SIZE=$2;
typeset ALLOWED_SIZE_OF_DIRECTORIES=$3;
typeset ALLOWED_SUMMAY_OF_FILES=$4;
ALLOWED_SIZE_OF_DIRECTORIES=`expr $3 \* 1024`
ALLOWED_SUMMAY_OF_FILES=`expr $4 \* 1024`
NEW_DIRECTORIES=0;
if [ $((${ALLOWED_SUMMAY_OF_FILES})) -lt
$((${ALLOWED_SIZE_OF_DIRECTORIES})) ];then
echo "Arg 3 has to be greater or equal than Arg 4"
exit
fi
until [ $((${SUMMARY_OF_FILES})) -gt
$((${ALLOWED_SUMMAY_OF_FILES})) ]; do
echo "
"
#FOUNDED_FILES=`find $6 -type f -size -${MAX_SIZE}k
-a -size
+${MIN_SIZE}k -maxdepth 1`;
FOUNDED_FILES=`find $6 -type f -size -${1}k -a
-size +${2}k -name
\[a-zA-Z0-9\]\* -maxdepth 1`;
if [ -z "$FOUNDED_FILES" ];then
echo "No files are found";
exit;
else
z=0;
if [ -d 1 ];then
rm -rf 1
fi
#mkdir $NEW_DIRECTORIES;
##mkdir 1;
#if [ $? -eq 0 ];then
# #cd 1;
# cd $NEW_DIRECTORIES;
#else
# exit
#fi
#NEW_DIRECTORIES=2;
if [ "${ADD_TO_NUMBER_OF_FILES_ALLOWED}" = "TRUE" ];
then
for i in $FOUNDED_FILES;do
NUMBER_OF_FILES=`expr
$NUMBER_OF_FILES + 1`
#echo $NUMBER_OF_FILES
done
ADD_TO_NUMBER_OF_FILES_ALLOWED="FALSE"
fi
for i in $FOUNDED_FILES;do
SIZE_OF_FILE[z]=`ls -l $i|tr -s " "|cut -f 5
-d " "`;
if [ "$SIZE_OF_FILE" -gt 0 ];then
SUMMARY_OF_FILES=`expr
$SUMMARY_OF_FILES +
$((${SIZE_OF_FILE[z]}))`
if [ $((${SUMMARY_OF_FILES})) -gt
$((${ALLOWED_SUMMAY_OF_FILES})) ];then
echo "SCHLUSS"
exit ;
fi
echo "SUMMARY_OF_FILES"
$SUMMARY_OF_FILES
echo "ALLOWED_SIZE_OF_DIRECTORIES"
$ALLOWED_SIZE_OF_DIRECTORIES
echo "ALLOWED_SUMMAY_OF_FILES"
$ALLOWED_SUMMAY_OF_FILES
SUMMARY_OF_FILES_FOR_EACH_DIRECTORY=`expr
$SUMMARY_OF_FILES_FOR_EACH_DIRECTORY + $((${SIZE_OF_FILE[z]}))`
if [ "${NEW_DIRECTORIES}" -eq 0
];then
NEW_DIRECTORIES=1;
mkdir $NEW_DIRECTORIES;
if [ $? -eq 0 ];then
cd $NEW_DIRECTORIES;
else
exit
fi
fi
if [
$((${SUMMARY_OF_FILES_FOR_EACH_DIRECTORY})) -gt
$((${ALLOWED_SIZE_OF_DIRECTORIES})) ];then
cd ..
mkdir $NEW_DIRECTORIES
cd $NEW_DIRECTORIES
echo "Neues Verzeichnis"
`pwd`
SUMMARY_OF_FILES_FOR_EACH_DIRECTORY=0;
NEW_DIRECTORIES=`expr
$NEW_DIRECTORIES + 1`
fi
echo $i
cp $i .
COUNT_FILES=`expr $COUNT_FILES + 1`
if [ $((${NUMBER_OF_FILES_TO_GET}))
-lt $((${COUNT_FILES}))
];then
exit
else
#if [ $((${COUNT_FILES}))
-gt $((${NUMBER_OF_FILES})) ]; then
#if [ $((${COUNT_FILES}))
-gt $((${NUMBER_OF_FILES=`expr
$NUMBER_OF_FILES - 1`})) ]; then
if [ $((${COUNT_FILES=`expr
$COUNT_FILES - 1`})) -gt
$((${NUMBER_OF_FILES})) ]; then
echo "GROESSER"
echo $FOUNDED_FILES
exit;
fi
echo "Name der Datei: "$i
echo "Groesse der Datei:
"${SIZE_OF_FILE[z]} "SUMME:
"$SUMMARY_OF_FILES "ERLAUBTE GESAMMTGROESSE:
"$ALLOWED_SUMMAY_OF_FILES
echo "NUMBER_OF_FILES: "
$NUMBER_OF_FILES
echo "COUNT_FILES: "
$COUNT_FILES
fi
else
echo "TEST"
fi
z=`expr $z + 1`
done
fi
done
###- ENDE von files_to_catch_v1.2.sh-#############################
\|||/
`@|@`thomas
-
files_to_catch_v1.2.tar.gz
Description: application/tgz

