Jeden Ordner extra zippen.

  • Ersteller Steppengewächs
  • Erstellt am
Steppengewächs

Steppengewächs

Jungspund
Hallo Leute!

Ich hab mich letztens wieder einmal an einem Shell Script versucht.

Ich wollte einen Ordner wegkopieren, danach in den eben kopierten Ordner wechseln und mittels ls -d */ die Ordner der ersten Ebene auslesen und in einer Text-Datei speichern. Klappt soweit auch.

Danach wollte ich einfach die Text-Datei mittels for-Schleife durchschleifen und jeden Ordner in der ersten Ebene in einen eigenen Tarball klopfen. Zum Schluss dann noch einen gesamten Tarball über die eben erstellen Tarballs drüber, fertig.

Leider kriege ich bei ls -d */ die Ordnernamen mit einem / am Ende zurück, somit klappt gar nichts mehr. Ich weiß da gibt es ein Replace awk oder awp oder sowas.

Nun meine Frage hat jemand eine andere Idee für das Script? Oder gibt es vl. bei Tar einen Befehl der jeden Ordner extra in einen Tarball wirft bei dem angegeben Root-Pfad.

Danke!
lg
 
Ja nur durchsucht er das gesamte Verzeichnis und gibt mir alles, inklusive aller Unterunterordner zurück. Ich möchte ja nur die Ordner der ersten Ebene extra weg zippen.
 
dann solltest Du Dir die Optionen von find nochmals genauer anschauen...
 
Hi,

also da wuerden mir zig Loesungsmoeglichkeiten einfallen, aber um bei deinem konkreten Problem zu bleiben:
Code:
mydir=test/
echo ${mydir%/}
Ausgabe: test
Mit variable expansion laesst sich der Slash am Ende ohne Probleme abtrennen.

mfg,
bytepool
 
find kennt die Option -maxdepth N!
Damit kannst du einfach die Suchtiefe (n) festlegen.
Bei dir wär N=1.

Wolfgang
 
Hi,

auch der Befehl:

$(dirname $Pfad)

liefert den Pfad ohne / am Ende

mfg
 
hat nur den Nachteil, daß die letzte Ebene fehlt.
Code:
[root@web1 usr]# find . -maxdepth 1 -type d
.
./share
./local
./kerberos
./lib64
./src
./sbin
./lib
./include
./etc
./libexec
./games
./bin
[root@web1 usr]# find . -maxdepth 1 -type d -exec dirname {} ';'
.
.
.
.
.
.
.
.
.
.
.
.
.
-> müßte noch um basename ergänzt werden...
 
Evtl. tuts ja auch schon ein einfaches
Code:
find * -type d -prune
Gruss ...
 
Bei find ist es ohnehin ratsam, mit absolutem Pfad zu arbeiten.
 

Ähnliche Themen

verzeichniss suche funktioniert nicht

[Suche] - Hilfe bei der Überarbeitung eines bash-Scripts

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

datei auslesen und ordner umbenennen - bash unter linux

Nach editieren auf Linux Server läuft Ubuntu-Script nichtmehr?

Zurück
Oben