1.9k Aufrufe
Gefragt in Linux von
Hallo Leute

Ich möchte in einen Verzeichnis die Datein nach ein Stichwort
durchsuchen und in ein anderen Verzeichnis verschieben.

mit den befehl komme ich nicht richtig weiter:

find /verzeichnis/A/ -exec grep -i 'suchwort' /dev/null -exec mv {}
/zielverzeichnis/working \;

mit den befehl finde ich zwar datein, aber das verschieben klappt
einfach nicht:

find /verzeichnis/A/ -exec grep - i 'suchwort' /dev/null {} \;

Vielen dank für die Hilfe

Gruß Dennis

12 Antworten

0 Punkte
Beantwortet von
Hei,

bezieht sich das Suchwort auf den Dateinamen, oder auf deren Inhalt?


find /home/thomas/bilder/ -type f -name "*winter*" -exec mv {} /home/thomas/archiv \;

Dieses Beispiel verschiebt alle Bilder die irgenwie "winter" heissen ins archiv. Beachte hier die Anwendung von regulären Ausdrücken (hier den Platzhalter * )

Gruss
0 Punkte
Beantwortet von
nach der {} gehört ein Leerzeichen. Hab mich verschrieben. Sorry
0 Punkte
Beantwortet von
mac@gateway:~/tmp/case1002$ ls
a b dateien mit bluestar1
mac@gateway:~/tmp/case1002$ cat b
Hallo Leute

Ich möchte in einen Verzeichnis die Datein nach ein Stichwort
durchsuchen und in ein anderen Verzeichnis verschieben.

mit den befehl komme ich nicht richtig weiter:

bluestar1
mac@gateway:~/tmp/case1002$ xargs -r0 --arg-file <(find . -type f -exec grep -lZi bluestar1 {} +) \
mv -i --target-directory "dateien mit bluestar1"
mac@gateway:~/tmp/case1002$ ls
a dateien mit bluestar1
mac@gateway:~/tmp/case1002$ ls dateien\ mit\ bluestar1/
b
mac@gateway:~/tmp/case1002$

von hier http://unix.stackexchange.com/questions/56903/grep-command-to-find-files-containing-text-string-and-move-them

dateien mit gleichem namen und aehnlichem inhalt koennen 'verloren gehen'
0 Punkte
Beantwortet von
Bitte anpassen, hier nur die Konstruktion (am besten per copy&paste). In diesem Beispiel werden alle Dateien im Ordner Dokumente dursucht, nach einem String: "TempDatabase". Diese Dateien werden dann nach Bilder verschoben.


find ~/Dokumente -type f -exec grep -q 'TempDatabase' {} \; -exec mv -i {} ~/Bilder \;

funktioniert :)
Gruss
0 Punkte
Beantwortet von
funktioniert kein bisschen

c:\>find /?
Sucht in einer oder mehreren Dateien nach einer Zeichenfolge.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]]"Zeichenfolge"
[[Laufwerk:][Pfad]Dateiname[ ...]]

/V Zeigt alle Zeilen an, die die Zeichenfolge NICHT enthalten.
/C Zeigt nur die Anzahl der die Zeichenfolge enthaltenden Zeilen an.
/N Zeigt die Zeilen mit ihren Zeilennummern an.
/I Ignoriert Groß-/Kleinschreibung bei der Suche.
/OFF[LINE] Überspringt keine Offlinedateien.
"Zeichenfolge" Die zu suchende Zeichenfolge
[Laufwerk:][Pfad]Dateiname Zu durchsuchende Datei(en)

Fehlt der Pfad, so durchsucht FIND von der Tastatur aus eingegebenen Text oder
die Ausgabe des Befehls, der FIND in einer Befehlskette vorangestellt ist.
0 Punkte
Beantwortet von
c:\>find /?
Wenn schon, dann
user@host:~$ find --help
Hier Linux nicht Windows.

Hallo, Dateien finden und erkennen

Gruß
0 Punkte
Beantwortet von
Nochmal zu meiner Antwort 4:

Funktioniert. Ihr müsst selbstverständlich die Pfade und den Suchstring anpassen.

Habe mir dann nochmal Antwort 3 durchgelesen: Ich möchte Euch einen ganz wichtigen Tip geben: Die meissten Probleme kommen durch Leerzeichen im Dateinamen zustande. Ich möchte Euch deshalb dringend ans Herz legen, diese durch Unterstriche zu ersetzen. (dateien_mit_bluestar1). Ich selber benutze bei selbst ertsellten Dateien/ Ordnern noch nichteinmal Grossbuchstaben.

Viel Glück
0 Punkte
Beantwortet von
ja hellseher da hat doch keiner was davon wenn es BEI DIR funktioniert. krieg dich wieder ein
0 Punkte
Beantwortet von
find ~/tmp/case1002 -type f -exec grep 'bluestar1' \; -exec mv {} ~/dateien_mit_bluestar1 \;

Nicht abschreiben, sondern copy&paste. Hast Du Leerzeichen durch Unterstriche ersetzt? Xargs ist zwar effizienter, aber auch schwerer zu formulieren. Deshalb hier ohne.
0 Punkte
Beantwortet von
find /verzeichnis/A/ -exec grep -i 'suchwort' /dev/null -exec mv {}
/zielverzeichnis/working \;


find /verzeichnis/A/ -type f -exec grep 'suchwort' {} \; -exec mv {} /zielverzeichnis/working \;

Mehr kann ich nicht tun.
...