Bash-Skript gesucht
Hallo, ich möchte gerne mit einem Bashskript ein paar Dateien zippen. Ist mit "zip" ja kein Problem, allerdings kommt jetzt ein kleiner Zusatz: Ich möchte, dass das Archiv aus maximal 100 Dateien besteht und das bei erreichen dieser Grenze ein neues Archiv angefangen wird...
Allerdings bin ich nicht so fit im Shellscripting. Kann mir da jemand helfen?
Ich habe schonmal etwas rausgefunden, vllt hilft das:
- Man kann dem ZIP-Ding die Dateien, die gezippt werden sollen einfach per STDIN und damit per Pipe übergeben. (echo xyz | zip -@)
- Eine Schleife, die das Ergebnis von ls abgrast mit zusätzlicher Zählvariabel stelle ich mir vor
Bei der Umsetzung scheiterts bei mir einfach kläglich... Ich wäre euch sehr verbunden, wenn mir geholfen werden könnte! Danke!
Schokolade! Ich bin root, ich darf das.
Im Prinzip habe ich eine Lösung gefunden:
#!/bin/bash
dir=~/my/dir
thres=100
dir=${dir%/}
echo -n > temp
j=0
k=1
for i in $(ls ${dir});
do
if [ ${j} -ge ${thres} ]
then
j=0
cat temp | zip -@ files${k}.zip
k=`expr ${k} + 1`
echo -n > temp
fi
echo ${dir}"/"${i} >> temp
j=`expr ${j} + 1`
done
cat temp| zip -@ files${k}.zip
rm temp
Problem ist halt nur, dass die Dateinamen keine Leerzeichen und so enthalten dürfen, aber für Linux-Menschen sollte das ein eher geringes Problem sein^^
Schokolade! Ich bin root, ich darf das.
