Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Dateien ins Zip packen!

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Hk95
Newbie
Newbie
Beiträge: 8
Registriert: 26. Jan 2021, 14:14

Dateien ins Zip packen!

Beitrag von Hk95 »

Hallo Community! Habe vor kurzem schon eine Frage hier reingestellt und durch eure Hilfe konnte ich meinen Code ausbessern und viel dabei lernen! Er klappt nun so wie er soll, jedoch hab ich noch eine Verständnisfrage beim Archivieren von Dateien.

Mein Shell-Skript soll Dateien die älter als X Tage sind in eine Zip-Datei packen und sie dann löschen. Das klappt auch ganz gut, jedoch kann ich die gelöscht Datei nun nicht in der Zip-Datei die im Skript packed.zip heißt finden. Woran könnte das liegen?

Code: Alles auswählen

#!/bin/bash

#Nutzereingabe für Alter der Dateien
echo "How old should the files be?"
read Number_days

if ! [[ "$Number_days" =~ [0-9]+$ ]];then
        echo "Error, only enter a number please!"
        exit 1
fi

#Mindestalter der Dateien filtern und ausgeben
IFS=$'\n'
Files=$(find ../hellow -maxdepth 1 -mtime +$Number_days)
echo $Files

#Einzelne Dateien durchgehen und Nutzerabfrage
Archieve="packed.zip"
Counter=0

for File in $Files;do
        echo -n "Do you want to archive <$File>?(y/n):"
        read Decision

        #Eingabe überprüfen und Fallunterscheidung vollziehen
        if [ "$Decision" != "y" ] && [ "$Decision" != "n" ]; then
                echo -e "No proper Input recognized! Please only enter y or n!\a"
                continue

        elif [ "$Decision" = "n" ]; then
                echo -e "skipped current Fie!\a"
                continue
        
        #Archivierung wird zugestimmt: Datei wird verschoben und gelöscht!
        elif [ "$Decision" = "y" ]; then
                echo "File will be archived and the original will be deleted!"
                zip "Archieve" $File
                let Counter++
                rm -v $File
                continue        
        fi
done

#Bestätigung der Ausgabe
echo "$Counter File(s), older then $Number_days were successfully put in the <$Archieve>"

exit 0

Nachdem ich die zip öffne steht nur: Das Archiv ist leer oder Ark kann den Inhalt nicht öffnen. Funktioniert der "zip "Archieve" $File" command in meinem Skript doch nicht oder ist es etwas anderes?

Ich bedanke mich schonmal im Vorraus und liebe Grüße,
Hans
josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5659
Registriert: 23. Sep 2008, 17:09

Re: Dateien ins Zip packen!

Beitrag von josef-wien »

Für Dein Archiv kommen im Skript zwei verschiedene Namen vor.

P. S. In Deinem anderen Beitrag hast Du offenbar selbst eine Lösung gefunden, ohne sie aber dort für die Nachwelt zu dokumentieren.
Hk95
Newbie
Newbie
Beiträge: 8
Registriert: 26. Jan 2021, 14:14

Re: Dateien ins Zip packen!

Beitrag von Hk95 »

@josef-wien
Ich habe meinen letzten Post als [gelöst] markiert und die Lösung war im Grund nur dass ich $File und nicht $Files schreiben musste um meine Schleife zum funktionieren zu bringen! Habe ich eigentlich auch dazugeschrieben!

Was meinst du damit dass ich zwei verschiedene Namen für Archiv im Skript habe? ich sehe nur in Zeile 17: Archieve =
und in Zeile 36:
zip "Archieve" $File

Für mich sehen die beiden identisch aus und müssten keinen Fehler bringen! Oder überseh ich was?
marce
Advanced Hacker
Advanced Hacker
Beiträge: 1383
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: Dateien ins Zip packen!

Beitrag von marce »

Code: Alles auswählen

                zip "Archieve" $File
erstellt ein zip-File mit dem Namen Archieve - nicht eines mit dem Namen aus der Variable Archieve...
abgdf
Guru
Guru
Beiträge: 3411
Registriert: 13. Apr 2004, 21:15

Re: Dateien ins Zip packen!

Beitrag von abgdf »

In welchem Thema sollen wir denn nun antworten?

Mach' doch bitte die Namen normaler Variablen klein, also "$files", nicht "$Files".
Am Anfang großgeschriebene Variablennamen sind in vielen Sprachen z.B. für Klassen gedacht (die Du hier gar nicht verwendest).

Warum schreibe ich eigentlich (wie gewünscht) eine Liste mit Verbesserungsvorschlägen (im anderen Thema), wenn ich danach jeden Hinweis doch nochmal einzeln beschreiben muß? :???:
Antworten