Linux-Bash: Find Ergebnis in Anführungszeichen ausgeben?

3 Antworten

Versuch mal statt

for i in $( find "/$pfad" -name "$endung" ); do cp $i $ziel done*

das:

find "/$pfad" -name "$endung" -exec cp "{}" "$ziel" \;

Siehe auch: man 1 find

zimbo95 
Fragesteller
 05.08.2017, 18:30

Funktioniert, vielen Dank!

0

Wie andere ja schon geschrieben haben, führt die Klammerung mit " zum Ziel.

Was mir aber an deinem Beispiel auffällt: find ... -name ...

Wenn du wirklich nur die Endung als Suchargument angibst, dürftest du eigentlich keine Resultate bekommen! Ändere die Zeile mit find ab auf

for i in $( find -type f "$pfad" -name "*$endung"); do cp  -ipvu "$i" $ziel; done

Vorteil:

  • Die Suche beginnt im aktuellen Verzeichnis statt ab der Wurzel
  • alle Dateien, die mit endung aufhören, werden protokolliert und nur überschrieben, wenn sie älter sind

Annahme: du gibst nur die Erweiterung (endung) an

Mit "find -L ..." werden auch verlinkte Dateien berücksichtigt und mit "-iname ..." wird nicht auf die exakte Schreibweise geachtet.

Mit ? oder ?? in endung können abweichende Zeichen auftreten, z.B. od? (für OpenOffice-Dokumente).

Aber warum so kompliziert? Besser

find "$pfad" -type f -name "*$endung" -exec cp -ipvu {} $ziel \;

Da es sich ja scheinbar um eine BackUp-Operation handelt:

Vorsicht mit verlinkten Dateien ... da wird wohl nur der Link gesichert!

Mit dem cp -R werden auch Unterverzeichnisse bearbeitet.

Woher ich das weiß:eigene Erfahrung – Intensive Beschäftigung hiermit seit etlichen Jahren

Hallo

ich habe ein kleines Script geschrieben, welches mir einen bestimmten Dateityp heraussucht und in einen Neuen Ordner kopiert:

Das hättest Du besser in Code-TAGs gesetzt, dann sieht es gleich viel besser aus:

 #!/bin/bash
echo Pfad:
read pfad
echo Endung:
read endung
echo Ziel:
read ziel
for i in $(find $pfad -iname "$endung") ;
do
cp $endung $ziel ; ls -ZIEL ;
done

Ist es möglich die find ausgabe in " " zu setzen ?

Klar so zum Beispiel:

pfad=$(echo $pfad|sed 's/^/"/g'|sed 's/$/"/')

Es gibt aber immer mehr als einen Weg und meiner ist jetzt nicht unbedingt der für Dich bessere.

Linuxhase

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102