ubuntuusers.de

Schleife: Alle Unterordner in einzelne Archive packen

Status: Gelöst | Ubuntu-Version: Xubuntu 18.04 (Bionic Beaver)
Antworten |

LeChef

Anmeldungsdatum:
21. Juli 2018

Beiträge: Zähle...

Hallo liebe Community!

Habe bereits Google als auch die Forumssuche bemüht, habe aber vermutlich nicht die passenden Suchbegriffe verwendet und nichts passendes gefunden.

Nehmen wir mal an ich habe folgende Verzeichnisstrukur:

1
2
3
4
5
/mnt/HDD1/unterordner1
/mnt/HDD1/unterordner2
/mnt/HDD1/unterordner3
/mnt/HDD1/unterordner4
und so weiter..

Ich möchte nun jeden Unterordner einzeln in ein 7z Archiv packen. Die Archive sollen dabei den gleichen Namen tragen wie die Unterverzeichnisse. Der Code dazu ist mir bekannt:

1
7z a /mnt/HDD1/unterordner1.7z /mnt/HDD1/unterordner1

Anstatt nun für jedes Unterverzeichnis einen eigenen Befehl im Skript zu schreiben, möchte ich das ganze per Schleife abhandeln. Dabei soll jedes vorhandene Unterverzeichnis einzeln gepackt werden. Das hat dann noch den Charme, dass ich damit flexibel auf zusätzliche oder entfalle Unterverzeichnisse reagieren kann.

Wie muss der Code dazu aussehen?

apt-ghetto

Anmeldungsdatum:
3. Juni 2014

Beiträge: 2943

Hallo und willkommen im Forum.

Die Idee mit der Schleife ist ja schon mal gut. Da bietet sich eine for-Schleife mit Globbing dafür an.

Als Startbeispiel:

1
2
3
4
5
6
#!/bin/bash

for ordner in /mnt/HDD1/*
do
	echo "7z a $ordner.7z $ordner"
done

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13216

Man kann sogar das Globbing der Shell nutzen, um nur Verzeichnisse zu selektieren:

1
2
3
for d in */; do
  irgend was mit "${d%/}"
done

Sonst prüft man - das ist sowieso etwas robuster für den Fall, dass es keine Verzeichnisse gibt:

1
2
3
4
5
for d in *; do
  if [ -d "$d" ]; then
    irgend was mit "$d"
  fi
done

LeChef

(Themenstarter)

Anmeldungsdatum:
21. Juli 2018

Beiträge: 2

Danke euch vielmals!

Ich arbeite mit der 2. Variante von rklm, funktioniert wunderbar. ☺

Antworten |