Hallo, ich habe eine Menge Ordner mit Dateien unterschiedlichen typs, und möchte alle Dateien eines Typs aus alles Unterordnern kopieren. Ich habe folgendes probiert: cp -R *.txt ../ordner/ Ich habe folgende Fehlermeldung bekommen: cp: Aufruf von stat für „*.txt“ nicht möglich: Datei oder Verzeichnis nicht gefunden Was habe ich falsch gemacht? Gruss Karl -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag, 28. September 2007 16:36:15 schrieb Karl Sinn:
ich habe eine Menge Ordner mit Dateien unterschiedlichen typs, und möchte alle Dateien eines Typs aus alles Unterordnern kopieren.
Ich habe folgendes probiert:
cp -R *.txt ../ordner/
die Shell expandiert die Zeichenfolge *.txt indem _die_shell_ im aktuellen Verzeichnis alle Dateien "auflistet", welche auf .txt enden. Diese Liste von Dateien wird dem cp Programm übergeben. Nun wenn's im aktuellen Verzeichnis keine solchen Dateien gibt, dann geht gibt's diese Meldung:
Ich habe folgende Fehlermeldung bekommen: cp: Aufruf von stat für „*.txt“ nicht möglich: Datei oder Verzeichnis nicht gefunden
Was habe ich falsch gemacht?
richtig wäre: find QUELLE -name "*.txt" -type f -exec cp \{\} ZIELVERZEICHNSI \; wichtig: die \ nicht vergessen. wobei QUELLE das Quellverzeichnis ist, welches rekursiv durchsucht wird. Es dürgen auch mehrere Quellverzeichniss angegeben werden. was das alles bedeutet kann man unter man find nachlesen. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Freitag, 28. September 2007 16:52 schrieb Dr. Jürgen Vollmer:
richtig wäre:
find QUELLE -name "*.txt" -type f -exec cp \{\} ZIELVERZEICHNSI \;
wichtig: die \ nicht vergessen.
Das hat geklappt, Danke Gruss Karl -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, jetzt habe ich doch noch eine Frage. Wie kopiere ich Dateien die ich mittels grep gefunden habe? Grep hat soweit ich gesehen habe die -exec option nicht. Wie kann ich also die Ausgabe von grep direkt auswerten, und alle Dateien in denen eine Zeichenkette gefunden wird kopieren? Gruss Karl -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Karl Sinn, Montag, 1. Oktober 2007 13:21:
jetzt habe ich doch noch eine Frage. Wie kopiere ich Dateien die ich mittels grep gefunden habe?
while read kopiermich; do cp $kopiermich /irgendwo/hin done < grep... -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Montag, 1. Oktober 2007 13:31 schrieb Andre Tann:
while read kopiermich; do cp $kopiermich /irgendwo/hin done < grep...
Hier meine Zeile: while read kopiermich; do cp $kopiermich ../suche/ done < grep -R Guillaume * hat aber nicht funktioniert, ich habe nur so eine Art Eingabeaufforderung ">" bekommen . Gruss Karl -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Karl Sinn, Montag, 1. Oktober 2007 16:14:
while read kopiermich; do cp $kopiermich ../suche/ done < grep -R Guillaume *
hat aber nicht funktioniert, ich habe nur so eine Art Eingabeaufforderung ">" bekommen .
Ein ";done" am Schluß fehlt. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 01 Okt 2007, Karl Sinn schrieb:
Hier meine Zeile: while read kopiermich; do cp $kopiermich ../suche/ done < grep -R Guillaume *
hat aber nicht funktioniert, ich habe nur so eine Art Eingabeaufforderung ">" bekommen .
Ein einfaches "<" ist keine Prozesssubstitution, die als Eingabe der while-read-Schleife nötig wäre. -dnh -- "Power corrupts, but the power of duct tape corrupts absolutely" -- "Florence Ambrose", on noticing the roof panels of the space ship being only duct-taped in place; from "Freefall" [http://freefall.purrsia.com/ff600/fv00575.htm] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, meinst Du sowas wie "ls | grep string" ? mein Vorschlag (bekanntlich führen viele Wege nach Rom): #!/bin/bash for filename in `ls -1 | grep textsrting` ; do cp $filename /directory/ done Gruß, Ulrich Karl Sinn wrote:
Hallo,
jetzt habe ich doch noch eine Frage. Wie kopiere ich Dateien die ich mittels grep gefunden habe?
Grep hat soweit ich gesehen habe die -exec option nicht. Wie kann ich also die Ausgabe von grep direkt auswerten, und alle Dateien in denen eine Zeichenkette gefunden wird kopieren?
Gruss Karl
-- Ulrich Hiller Max-Planck-Institut fuer Astronomie Koenigstuhl 17 69117 Heidelberg Germany phone +49 6221 528238 fax +49 6221 528246 email hiller@mpia-hd.mpg.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Montag, 1. Oktober 2007 13:35 schrieb Ulrich Hiller:
meinst Du sowas wie "ls | grep string" ? mein Vorschlag (bekanntlich führen viele Wege nach Rom): #!/bin/bash for filename in `ls -1 | grep textsrting` ; do cp $filename /directory/ done
Hier meine Zeile: for filename in 'ls -1 | grep Guillaume' ; do cp $filename ../suche/ done Auch hier bekomme ich nur eine Eingabeaufforderung. Was mache ich falsch? Gruss Karl -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Karl Sinn wrote:
Hallo,
Am Montag, 1. Oktober 2007 13:35 schrieb Ulrich Hiller:
meinst Du sowas wie "ls | grep string" ? mein Vorschlag (bekanntlich führen viele Wege nach Rom): #!/bin/bash for filename in `ls -1 | grep textsrting` ; do cp $filename /directory/ done
Hier meine Zeile: for filename in 'ls -1 | grep Guillaume' ; do cp $filename ../suche/ done
for filename in `grep -il guillaume *` ; do echo "String in $filename" ; done -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 01 Okt 2007, Sandy Drobic schrieb:
Karl Sinn wrote:
Am Montag, 1. Oktober 2007 13:35 schrieb Ulrich Hiller:
meinst Du sowas wie "ls | grep string" ? mein Vorschlag (bekanntlich führen viele Wege nach Rom): #!/bin/bash for filename in `ls -1 | grep textsrting` ; do cp $filename /directory/ done
Hier meine Zeile: for filename in 'ls -1 | grep Guillaume' ; do cp $filename ../suche/ done
for filename in `grep -il guillaume *` ; do echo "String in $filename" ; done
*kopfschüttel* Macht das mal mit Dateinamen, in denen auch nur ein Leerzeichen vorkommt... Mit grep -il guillaume * | while read -r filename ; do echo "$filename"; done machen immerhin nur Zeilenumbrüche[1] Ärger... Sicher ist (aber nur mit hinreichend neuem[2] GNU find/xargs/cp): find . -type f -exec grep -q -i 'guillaume' {} \; -and -print0 | xargs -0 -r cp --target-directory=/ZIEL/ Alles ungetestet! HTH & HAND, -dnh [1] Ja, ein Dateiname darf Zeilenumbrüche enthalten! [2] mein GNU cp kann noch kein --target-directory, da behilft man sich halt z.B. so: find . -type f -exec grep -q -i 'guillaume' '{}' \; -and \ -exec cp '{}' /ZIEL/ \; -- Well I wish you'd just tell me rather than try to engage my enthusiasm. -- Marvin -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
David Haller wrote:
Hallo,
Am Mon, 01 Okt 2007, Sandy Drobic schrieb:
Karl Sinn wrote:
Am Montag, 1. Oktober 2007 13:35 schrieb Ulrich Hiller:
meinst Du sowas wie "ls | grep string" ? mein Vorschlag (bekanntlich führen viele Wege nach Rom): #!/bin/bash for filename in `ls -1 | grep textsrting` ; do cp $filename /directory/ done Hier meine Zeile: for filename in 'ls -1 | grep Guillaume' ; do cp $filename ../suche/ done for filename in `grep -il guillaume *` ; do echo "String in $filename" ; done
*kopfschüttel*
Oh weh! Fang' doch nicht jetzt schon damit an, das kommt als Tattergreis noch früh genug!
Macht das mal mit Dateinamen, in denen auch nur ein Leerzeichen vorkommt... Mit
Das sollte auch keine vollständige Lösung sein, sondern nur zeigen, wie die Zeile technisch funktioniert. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Karl, Am Montag, 1. Oktober 2007 16:16 schrieb Karl Sinn: snip
Hier meine Zeile: for filename in 'ls -1 | grep Guillaume' ; do cp $filename ../suche/ done
Auch hier bekomme ich nur eine Eingabeaufforderung.
Was mache ich falsch? Vor dem letzten "done" fehlt ein Semikolon: for filename in 'ls -1 | grep Guillaume' ; do cp $filename ../suche/ ; done
-- Mit freundlichen Grüßen Matthias Müller (Benutzer #439779 im Linux-Counter http://counter.li.org) PS: Bitte senden Sie als Antwort auf meine E-Mails reine Text-Nachrichten! Siehe auch: http://www.gnu.org/philosophy/no-word-attachments.de.html
participants (7)
-
Andre Tann
-
David Haller
-
Dr. Jürgen Vollmer
-
Karl Sinn
-
Matthias Müller
-
Sandy Drobic
-
Ulrich Hiller