Multible MV und datei finden

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von muemmi, 20.12.2005.

  1. muemmi

    muemmi Eroberer

    Dabei seit:
    14.12.2005
    Beiträge:
    65
    Zustimmungen:
    0
    und schon wieder ich

    zwei dinge fehlen mir noch.

    a) eine mv für verschieden datein

    mv *.txt qsp/mischer/*.tank.... das tut es nicht !

    ich möchte alle txt woanderhin nach *.tank renamen

    b) ich hab da eine ansammlung von dateien

    z.b tank123.tank und tank124.tank usw.

    wie kralle ich mir eine davon ohne den namen zu wissen (ausßer die endung)
    und rename sie zu einem bekannten namen

    damit ich sie dann mit einem program bearbeiten kann !
     
  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, 20.12.2005
    Zuletzt bearbeitet: 20.12.2005
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    a:

    Wenn ".txt" nur am Ende des Filenamen vorkommt:

    Code:
    for i in $(find . -iname "*.txt"); do mv $i qsp/mischer/${i/.txt/.tank}; done
    
    edit: Allgemeingültig:

    Code:
    find . -iname "*.txt" | perl -ple '$file=$_; s/\.txt$/.tank/i; rename $file, "qsp/mischer/$_"'
    
     
  4. #3 ninguno, 20.12.2005
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    zu a)
    Code:
    for i in *.txt; do mv "$i" qsp/mischer/$(basename "$i" .txt).tank; done
    zu b) weiss nicht was du meinst
     
  5. muemmi

    muemmi Eroberer

    Dabei seit:
    14.12.2005
    Beiträge:
    65
    Zustimmungen:
    0
    hmmmm

    wir erkäre ich jetzt besser b)

    also ich bekomme daten von einem messgerät (oder besser eine Waage) geliefert. die stehen in einer datei diese dateien haben verschieden namen
    und immer die selbe endung

    jetzt muß ich sie einzel anpacken und sie umbenenne in einen bekannten namen
    dann wird die datei von einem programm abgerabeitet
    dann wird sie verworfen und die nächset ist dran

    erklärung

    ich migriere von vms auf unix...
    ich weiß zwar was ich will aber ich kenn die feinheiten nicht
    dummerweise ist es eine shelloberfläche auf windows die nicht so doll viele befehle kennt!
     
  6. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    zu b) Wenn Dein Programm den Dateinamen als Kommandozeilenparameter akzeptiert, kannst Du es so gestalten:
    Code:
    for i in *.tank ; do /pfad/zu/Deinem/programm $i ; done
    
    Vor dem 'done' kannst Du noch ein 'rm $i; ' einfuegen, falls die abgearbeitete Datei geloescht werden soll.
     
  7. #6 Wolfgang, 20.12.2005
    Zuletzt bearbeitet: 20.12.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    • 1. Ist das hier ein Unixboard, und somit eigentlich nicht für WindoZe limitierte Dosboxen zuständig
    • 2. Kennt IMHO sogar die Dos pseudo Shell dafür Befehle.
    • 3. Lässt sich sowas in jedem Fall auch mit perl erledigen. Das gibt es auch für Wintendo. Somit bleiben diese Codesnippel portierbar genug.

    Wie du dein Problem anzufassen hast steht ja schon oben.
    Außerdem gibt es dafür etliche manpages auch im Netz, die solch File bezogene Befehle beschreiben.

    Um einen Dateinamen vor der (sogenannten) erweiterung zu expandieren gibt es viele Möglichkeiten.
    Einige davon findest du hier im Board.
    Mit perl z.B. so
    ....
    $name=~s!.*\.([^.])+$!neu.$1!ig
    ....
    Das in eine Schleife gepackt, und über deinen Prozess für ausgewählte Dateien einfügen.

    Andere Varianten stehen oben im Thread.
    Willst du die z.b alle in einem Arbeitsverzeichnis haben:
    Code:
    for I in $(find /home -iname "*txt"); do perl -MFile::Copy -le ' copy $1, "/temp/neu$3" if $ARGV[0]=~m/((.*\/).*(\.[^.]+))$/ig' $I;
    here commands in /temp;
    ...
    done
    
    
    Im og Fall hält die
    $1=gesamte Datei mit Pfad
    $2= UrsprungsPfad ohne Datei
    $3= Dateiendung nach dem letzten Punkt -> hier wohl txt|Txt|TxT...siehe ->>Option i im Regexp.

    Du kannst auch gleich File::Find einsetzen,dann sparst du dir die for und find Geschichte. Oder statt copy rename usw. einsetzen.
    Das sind Sachen der eigenen programmiertechnischen Creativität ;)

    Oder eben oben genannte Alternativen mit reinen Shellmitteln
    via Parameterexpansion

    Edit:
    Zu deinem besagten anonymen Programm:
    Wie dieses die Dateienamen erwartet, kann ausser dir niemand wissen.
    Also entweder den Inhalt übergeben oder den Namen.

    Gruß Wolfgang

    PS Eben mal gegoogelt:
    Der xcopy-befehl unter deiner pseudo Shell cmd.exe kann das auch!
    Dazu sollte ja wenigstens unter dem WintenDosystem eine Hilfe existieren.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Multible MV und datei finden

Die Seite wird geladen...

Multible MV und datei finden - Ähnliche Themen

  1. Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...

    Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...: Ich habe eine Textdatei in der ich Einträge bis zum 3. Leerzeichen mit den restlichen Zeilen (auch nur bis 3. Leerzeichen) vergleichen muss und...
  2. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  3. Dateiinhalte vergleichen - Neue Sätze dann ausgeben

    Dateiinhalte vergleichen - Neue Sätze dann ausgeben: Liebe Forumsmitglieder, ich benöte mal wieder Eure Hilfe: Ich möchte 2 Dateien vergleichen. Datei-1 hat z.B. 100 Datensätze mit mehreren Feldern...
  4. Dateien selektieren und zählen

    Dateien selektieren und zählen: Hallo, das ist mein erster Beitrag, bitte entschuldigt, falls nicht alles richtig geschrieben ist. Ich muss meine erste Hausaufgabe als...
  5. Timestamp an Inhalt einer Textdatei anfügen

    Timestamp an Inhalt einer Textdatei anfügen: Hallo, ich als neuer, unerfahrener Nutzer von Linux und der bash hätte folgende Frage. Und zwar würde ich gerne mit einem command den Zeitstempel...