copy befehl für bestimmte dateien

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    ich hoffe ich bin in der richtigen Rubrik. :blush:

    Ich habe einen Ordner mit vielen unterordnern und vielen Dateien.
    Nun möcht ich gern mit einem copy befehl alle Dateien in diesem Ordner inkl. unterordner herauskopieren. Und zwar nur die die folgende Zeichenfolge im Dateinnamen haben [!]
    Das bekommt man doch bestimmt hin oder? Irgendwie mit grep und eine pipe | oder so?

  • Die Dateien sollen kopiert werden.

    quellverzeichniss schaut zb. so aus:

    /home/thomas/unsortiertes/
    inkl. unterordner

    zielordner wäre zb.

    /home/thomas/sortiertes/

    Einige Datei (die die kopiert werden sollen) haben ein "[!]" im Dateinamen. Also zb.

    datei 1 [z]....
    datei 2 [!]....
    datei 3 [y]...

    In dem Beispiel soll nur datei 2 kopiert werden.
    Es gibt aber einige mehr die ein [!] im Namen haben.

  • Ein bisschen leichter zu lesen, im Prinzip aber das selbe:

    Code
    #! /bin/bash
    source=$HOME/testdir
    dest=$HOME
    
    
    for i in $(find $source -name "*[!]*")
    do
            echo "Kopiere: $i"
            cp "$i" "$dest"
    done
  • Äh, hat hier auch nur ein einziger das alles mal ausprobiert? :denker:
    Oder nur aus dem Kopf geschrieben?
    Valscher Vehler! :no_sad:

    Das Ausrufezeichen ist ein Sonderzeichen und invertiert das folgende. Es muß also "escaped" werden durch einen Backslash "\" vorneweg.
    Dann funktioniert schonmal der "find".
    Aber selbst dann hakt es beim "cp
    Ob das von bash oder von cp kommt, weiß ich nicht.

    Versucht doch mal, im Terminal eine Datei mit Ausrufezeichen zu erstellen:

    Code
    touch bla!fasel.txt

    Habe ich im Terminal nicht hinbekommen. Ich mußte mich, um das Ausrufezeichen in eine Datei reinzubekommen, per Dateimanager von meinem Ubuntu-Rechner aus zugreifen. (Pi headless)

    Sollte das Ausrufezichen natürlich nur als (leider sehr schlecht gewähltes) Beispiel dienen, dann nehme ich alles zurück und behaupte das Gegenteil. :angel:

  • Hi Oerks, alter Zweifler ...

    Zufrieden ;) ... ?
    cu,
    -ds-

  • Auch hier nichts ungetestet :angel:

  • evil Stimmt.

    Um auch die Ordnerstruktur aufrecht zu erhalten kann man beim cp Befehl noch die Option --parents setzen. Somit wird nichts mehr überschrieben da für die Dateien beim kopieren entsprechende Unterverzeichnise angelegt werden.

    Code
    find -name *[!]* -exec cp --parents -v {} /tmp \;

    -----
    Das ist ja auch das was der TE eigentlich wollte? :)


    ...alle Dateien in diesem Ordner inkl. unterordner herauskopieren...

    DON'T PANIC!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!