Fragen zu find

Hallo,

ich habe da ein paar Fragen zum Befehl „find“ unter Linux.

Ich weiss, dass ich vom /-Ordner aus mittels

find . -name \*datei\*

einen Ordner oder ein Verzeichnis finde, dass den Namen datei enthält. Das gleiche funktioniert auch in einem beliebigen Verzeichnis.

Mit

find . -iname \*datei\*

werden auch die Ordner gefunden, in denen „datei“ ein grosses „D“ enthält.

Dabei wird so ein Ordner ja auch rekursiv durchsucht.

Wie muss ich vorgehen, wenn ich möchte, dass die gefundenen Dateien gleich in ein bestimmtes Verzeichnis kopiert werden?
Es geht insbesondere darum, zB auf einem Windowssystem alle vorhandenen *.xls-Dateien zu finden und diese dann bequem als Ordner auf einen anderen Rechner zu kopieren.
In ein File lassen sich sich ja einfach mittels „> datei.txt“ schreiben, aber wie in ein Verzeichnis?

Noch ne Frage zu grep:
Mit

grep -r text \*

kann ich Dateien daraufhin durchforsten, ob der Text „text“ enthalten ist. Wie kann ich hier bewirken, dass nicht zwischen Gross- und Kleinschreibung unterschieden wird?

Grüsse
schuelsche

Hallo,

Hi,

Ich weiss, dass ich vom /-Ordner aus mittels

> find . -name \*datei\*

Cave: shell expension kommt vor Programmaufruf: wenn es im aktuellen Verzeichnis eine Datei gibt, auf die das pattern passt (eg. foo123 datei 456bar), wird nur nach diesen Namen gesucht, da die shell ein

 $ find . -name foo123datei456bar

draus macht. Besser mit „“ oder gar ‚‘ escapen.

einen Ordner oder ein Verzeichnis finde, dass den Namen datei
enthält. Das gleiche funktioniert auch in einem beliebigen
Verzeichnis.

Ja.

Mit

> find . -iname \*datei\*

werden auch die Ordner gefunden, in denen „datei“ ein grosses
„D“ enthält.

-iname stellt Gross-/Klein komplett ab. Er wuerde also auch foo123dAtEi456bar finden.

Dabei wird so ein Ordner ja auch rekursiv durchsucht.

Wie muss ich vorgehen, wenn ich möchte, dass die gefundenen
Dateien gleich in ein bestimmtes Verzeichnis kopiert werden?

 $ man find
 $ find . -name '\*datei\*' -exec cp '{}' /path/to/dst \; 

Es geht insbesondere darum, zB auf einem Windowssystem alle
vorhandenen *.xls-Dateien zu finden und diese dann bequem als
Ordner auf einen anderen Rechner zu kopieren.

Wenn Du schon beim Lesen der manpage bist solltest Du einen Blick auf -type werfen, um das auf regulaere Dateien einschraenken. Auch wenn Windows-Nutzer selten Verzeichnisse mit *.xls und noch viel seltener blockdevices auf ihren Rechnern haben.

Noch ne Frage zu grep:
Mit

> grep -r text \*

kann ich Dateien daraufhin durchforsten, ob der Text „text“
enthalten ist. Wie kann ich hier bewirken, dass nicht zwischen
Gross- und Kleinschreibung unterschieden wird?

Ja, holla!

 $ man grep

und nach case suchen. Heute keine Lust?

HTH,
Gruss vom Frank.

Hallo Schuelsche,

Wie muss ich vorgehen, wenn ich möchte, dass die gefundenen
Dateien gleich in ein bestimmtes Verzeichnis kopiert werden?
Es geht insbesondere darum, zB auf einem Windowssystem alle
vorhandenen *.xls-Dateien zu finden und diese dann bequem als
Ordner auf einen anderen Rechner zu kopieren.
In ein File lassen sich sich ja einfach mittels „>
datei.txt“ schreiben, aber wie in ein Verzeichnis?

Wie wäre es z.B. mit

find . -name "\*.xls" -exec cp \{\} Ziel\_Verzeichnis \;

(siehe man find)

Noch ne Frage zu grep:
Mit

grep -r text *

kann ich Dateien daraufhin durchforsten, ob der Text „text“
enthalten ist. Wie kann ich hier bewirken, dass nicht zwischen
Gross- und Kleinschreibung unterschieden wird?

grep -ir text \*

(siehe man grep)

Mfg,
Pürsti

Danke
Hallo,

danke für Eure Hilfe.
Werde auch die Manpages durchforsten, aber immer wenn ich da was gesucht habe und versucht habe, das zu realisieren, hat es nicht geklappt, weil ich irgendwie mit der Syntaxerklärung nicht klar komme…

Und an Frank wegen der *.xls-Dateien: klar liegen die bei Windowsusern nicht in einem Verzeichnis, deshalb möchte ich ja die ganze Festplatte danach durchsuchen, um alle zu finden…

Grüsse
schuelsche

Hallo,

Hi,

Und an Frank wegen der *.xls-Dateien: klar liegen die bei
Windowsusern nicht in einem Verzeichnis, deshalb möchte ich ja
die ganze Festplatte danach durchsuchen, um alle zu finden…

Lies nochmal.

 $ find . -name '\*.xls'

findet _alles_, was irgendwie auf das pattern passt. Also auch Verzeichnisse und device nodes. Letztere haben Windows-Nutzer eher selten, aber wenn sie ein Verzeichnis Dokumente.xls nennen, wird auch das gefunden.

 $ find . -name '\*.xls' -type f

schraenkt auf regulaere Dateien ein.

Gruss vom Frank.

Hallo,

Lies nochmal.

Ok, danke, jetzt hab ich’s verstanden :wink:

Grüsse
schuelsche