schicker kleiner perl einzeiler

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von belubaba, 29.11.2005.

  1. #1 belubaba, 29.11.2005
    belubaba

    belubaba Tripel-As

    Dabei seit:
    20.09.2005
    Beiträge:
    184
    Zustimmungen:
    0
    Ich habe diesmal kein Problem sondern eine Bitte ;)

    Die Aufgabenstellung ist folgende:

    Ich habe eine Inidatei (verzeichnis.ini) die pro Zeile einen Eintrag für ein anzulegendes Verzeichnis enthält

    cat verzeichnis.ini
    verzeichnis1
    verzeichnis2
    verzeichnis3
    ...

    Ich habe ein Verzeichnis (/meinAltesVerzeichnis) das beliebig viele Dateien aber keine Unterverzeichnisse enthält.

    Jetzt möchte ich die verzeichnis.ini auslesen und unter /meinNeuesVerzeichnis alle darin aufgezählten Verzeichnisse anlegen.

    Danach alle Dateien aus /meinAltesVerzeichnis in jedes dieser neu angelegten Verzeichnissen kopieren.

    Mit Shell Skript könnte ich das problemlos umsetzten. Leider habe ich keinen blassen Schimmer von perl :).

    Kann mir einer einen schicken kleinen Perl Einzeiler für das Problem schreiben wenn Ihm gerade langweilig ist? :)

    b.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Xanti, 29.11.2005
    Zuletzt bearbeitet: 29.11.2005
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Also einen Einzeiler daraus zu machen, ist für mich a bissel schwierig ;)

    Wenns auch ein Mehrzeiler tut:

    Code:
    #!/usr/bin/perl
    
    use strict;
    use File::Copy;
    
    my $ininame = "verzeichnis.ini";
    my $olddir = "/meinAltesVerzeichnis";
    my $newdir = "/meinNeuesVerzeichnis";
    my $filename;
    
    open FILE, "<$ininame";
    opendir OLDDIR, $olddir;
    foreach (<FILE>) {
    	chomp $_;
    	mkdir "$newdir/$_";
    	while ($filename = readdir OLDDIR) {
    		copy("$olddir/$filename", "$newdir/$_/$filename") if $filename !~ /\.$/
    	}
            rewinddir OLDDIR
    }
    closedir OLDDIR;
    close FILE
    
    Gruss, Phorus
     
  4. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    Schäm dich , das gillt nicht , er wollte nen Einzeiler !

    Zurück ans Zeichenbrett marsch marsch :devil:
     
  5. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ok, Du hast es nicht anders gewollt :devil:

    Code:
    perl -e 'use strict;' -e 'use File::Copy;' -e 'my $ininame = "verzeichnis.ini";' -e 'my $olddir = "/meinAltesVerzeichnis";' -e 'my $newdirbase = "/meinNeuesVerzeichnis";' -e 'my $filename;' -e 'open FILE, "<$ininame";' -e 'foreach (<FILE>) {' -e 'chomp $_;' ....
    
     
  6. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    Na also . Geht doch .

    Und das nächste mal nur noch so. :devil:

    Gruß Sono
     
  7. #6 Wolfgang, 30.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Nicht schlecht ;)

    Gegenvorschlag:
    Wenn die Dateien alle in einem Verzeichnis ohne Unterverzeichnisse liegen, dann folgendes Script aus diesem Verzeichnis starten.
    Die Datei verzeichnis.ini enthält absolute Pfade? Wenn nicht kann man das anpassen. Einfach am Begin die Variable festlegen und bei mkdir anfügen.

    Code:
    perl -MFile::Copy -e 'open IN,"<verzeichnis.ini";@a=<IN>;map {foreach $e (@a){mkdir "$e\n" unless -d $e;copy $_, "$e/$_" if -e $_ }}@ARGV' /pfad/zu/der/quelle/*
    
    Gruß Wolfgang
     
  8. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ich hab map eigentlich noch nie benutzt, scheint aber ne verdammt nützliche Funktion zu sein.

    Gruss, Phorus
     
  9. #8 Wolfgang, 30.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Stimmt, macht aber den Code mitunter sehr schlecht lesbar.

    Ich hätte statt der inneren Schleife noch ein zweites map einfügen können, aber das wär dann noch unklarer geworden.

    Für Einzeiler ist es jedenfalls wie auch die Kurzform der if-Abfrage sehr geeignet.

    Gruß Wolfgang
     
  10. #9 belubaba, 30.11.2005
    belubaba

    belubaba Tripel-As

    Dabei seit:
    20.09.2005
    Beiträge:
    184
    Zustimmungen:
    0
    Na also, wusste ich doch das auf Euch verlass ist.

    Werde den Code gleich mal ausprobieren.
    Das spart mir einen halben Tag Dokumentation, integration und ähnlichen Verwaltungsschnickschnack.

    vielen dank

    b.
     
  11. #10 Schlaubi_fi.de, 01.12.2005
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Macht dann 9 Euro 99, zu zahlen am nächsten Schalter :D
     
  12. #11 Wolfgang, 01.12.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    hm..
    zZgl. MWST :D

    *gg*
    Gruß Wolfgang
     
  13. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Und ich krieg den grösseren Anteil, weil meine Lösung grösser ist :D
     
  14. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  15. #13 Wolfgang, 01.12.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Klar bekommst du die Mehrwertsteuer.
    :D
    Wolfgang
     
  16. Mattik

    Mattik Grünschnabel

    Dabei seit:
    13.11.2006
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo,

    ich bräuchte so etwas ähnliches.

    Ich möchte aus einem Pfad C:\Programme\Daten1\*.*
    alle Datein (incl. der Dateien aller Unterordner) in einen neuen Pfad kopieren.
    z.b. D:\Datenneu bzw. einen UNC Pfad auf dem Server \\dose\daten\datenneu

    Es sollen aber keine (Unter-)Verzeichnisse mit kopiert/angelegt werden.

    Hat hierfür einer der Spezialisten Zeit?

    Thx
     
Thema:

schicker kleiner perl einzeiler

Die Seite wird geladen...

schicker kleiner perl einzeiler - Ähnliche Themen

  1. VoCore: Kleiner Open-Source-Platinenrechner mit OpenWrt

    VoCore: Kleiner Open-Source-Platinenrechner mit OpenWrt: VoCore ist Open Source, was Hard- und Software betrifft, kostet 20 US-Dollar und setzt beim Basteln eine Stufe tiefer an als der Raspberry Pi....
  2. Artikel: LibreOffice 5.0: Installation und kleiner Überblick

    Artikel: LibreOffice 5.0: Installation und kleiner Überblick: Es hat eine Weile gedauert, bis LibreOffice 5.0 schließlich in der finalen Version erschienen ist. Wir stellen Ihnen die neueste Version und auch...
  3. SSD auf einen (geringfügig) kleineren USB-Stick wiederherstellen

    SSD auf einen (geringfügig) kleineren USB-Stick wiederherstellen: Hallo, ich habe hier ein Ubuntu, instaliert auf einer SSD. Für einige Systemtests möchte ich das System auf einen USb-Stick klonen, der leider...
  4. Firefox 41 mit kleineren Neuerungen

    Firefox 41 mit kleineren Neuerungen: Nachdem Mozilla einige Neuerungen von Firefox verschoben hat, fallen die Änderungen der aktuell freigegebenen Version 41 eher bescheiden aus. Neu...
  5. SeaMonkey 2.26 mit kleineren neuen Funktionen

    SeaMonkey 2.26 mit kleineren neuen Funktionen: Das SeaMonkey-Projekt hat seine gleichnamige Internet-Applikationen-Suite in der Version 2.26 freigegeben, die nun auf dem Stand von Firefox 29...