[linux-l] sed und grep: Dateiteile löschen
Steffen Solyga
solyga at absinth.net
Mi Dez 16 15:57:42 CET 2009
Automatische Dateimodifikationen vertraue ich keinem Skript gern an...
selbst wenn Backup vorhanden, machte ja Arbeit.
Was ist rli?
Wenn die Dateien flach vor Dir liegen, ist die Liste leicht zu erzeugen
$ for i in *; do grep -q "suchstring" "$i" && echo "$i"; done > ergebnis.txt
oder mit neuesten grep features
$ grep -l "suchstring" * > ergebnis.txt
Die Liste ist zwar schön zum Editieren (durchaus empfehlenswert, schon
als Test), macht die Weiterverabeitung aber schwieriger.
Wenn Du keine Blanks in Dateinamen hast, geht's noch
$ for i in `cat ergebnis.txt`; do sed s/"suchstring"//g "$i" >
xyz.txt; mv xyz.txt "$i"; done
Falls doch, muß Du Deine ergebnis.txt wieder lesen, so vielleicht
$ cat ergebnis.txt | ( read i; if [ "i" -eq "" ]; then exit; fi; sed
s/"suchstring"//g "$i" > xyz.txt; mv xyz.txt "$i")
Einfacher wäre es, ohne Dateiliste zu arbeiten, weil Du den
separierten Dateinamen schon in der Hand hältst
$ for i in *; do grep -q "suchstring" "$i" && sed s/"suchstring"//g
"$i" > xyz.txt; mv xyz.txt "$i"; done
oder gar
$ for i in *; do sed s/"suchstring"//g "$i" > xyz.txt; mv xyz.txt "$i"; done
Gruß, Steffen
Mehr Informationen über die Mailingliste linux-l