2010-11-04 8 views
6

Ich versuche, viele Dateien auf einmal mit sed mit * als Dateiname zu ersetzen. Es versucht jedoch auch, Verzeichnisse zu verarbeiten, gibt Fehler und endet. Gibt es einen einfachen Weg, dies zu überwinden?sed, um Verzeichnisse auszuschließen

Antwort

9

Ich bin nicht sicher, genau wie Sie sed hier verwenden, aber die normale Art und Weise nur reguläre Dateien in UNIX zu verarbeiten, ist mit der find Befehl, so etwas wie:

find . -type f -exec sed 's/Hello/Goodbye/g' {} ';' 

Der Typ Sie schränkt zu normalen Dateien, nicht zu Verzeichnissen oder FIFOs oder irgendeiner anderen Dateisystem-Magie. Wenn Sie man find auf Ihrem System ausführen, sehen Sie eine Fülle anderer Optionen, die Sie verwenden können.

+0

Ich bin immer noch ziemlich neu zu Linux/Unix-Shell-Befehle, warum ist es, dass, wenn ich dies ausführen spamt mein Bildschirm mit dem Inhalt vieler Dateien, aber ändert nichts? – HumbleWebDev

+0

@TheUnholy, das ist richtig. Die Absicht dieser Antwort war, zu zeigen, wie 'find' verwendet wird, um Dateien und nicht Verzeichnisse zu verarbeiten. Die 'Nutzlast' des Befehls 'find' (in diesem Fall ein einfacher 'sed'-Befehl) kann an Ihre Bedürfnisse angepasst werden. – paxdiablo

Verwandte Themen