21 Stimmen

Sed erstellt nicht löschbare Dateien in Windows

Ich versuche, den folgenden Befehl in Windows Server 2003 auszuführen, aber sed erzeugt einen Stapel von Dateien, die ich nicht von der Befehlszeile aus im aktuellen Verzeichnis löschen kann.

for /R %f in (*.*) do "C:\Program Files\gnuwin32\bin\sed.exe" -i "s/bad/good/g" "%f"

Hat jemand irgendwelche Vorschläge? Seltsamerweise kann ich die Dateien mit dem Windows Explorer löschen.

Wie gewünscht, finden Sie hier einige Beispieldateinamen:

  • sed0E3WZJ
  • sed5miXwt
  • sed6fzFKh

Und weitere Informationen zur Fehlerbehebung...

  • Er tritt sowohl in der Eingabeaufforderung als auch in Batch-Dateien auf
  • Wenn ich sed nur in einem einzigen Verzeichnis ausführen muss, verwende ich sed "s/bad/good/g" *.* und alles ist in Ordnung. Leider muss ich auch alle Unterverzeichnisse mit einbeziehen.
  • Ich habe nur Sed installiert.
  • Sed erstellt die Dateien

0voto

Norman Ramsey Punkte 193087

Dies ist ein Stich ins Blaue, aber es würde mich nicht im Geringsten überraschen, wenn die gnuwin32-Implementierung von sed falsch ist (d. h. in irgendeiner Weise fehlerhaft). Können Sie versuchen, das Problem mit dem Programm AT&T U/Win POSIX-Unterstützung für Windows? Es ist einfach zu installieren und enthält die Korn-Shell, sed y find so können Sie find anstelle der FOR /R . (Ich frage mich, ob ein Teil des Problems darin besteht, dass die MS FOR und gnuwin32 sed spielen nicht gut zusammen.)

0voto

Adrian R Punkte 11

Ich weiß, dass dies ein alter Thread ist, aber es ist immer noch ein Thema. Meine Lösung ist das Hinzufügen von "DEL sed*" am Ende einer Batch-Datei nach sed. Schnell und schmutzig.

0voto

Seb T Punkte 615

Ich verwende diesen Befehl, um die temporären Dateien zu bereinigen, die von gnuwin32s sed :

FOR /f "tokens=*" %%a in ('dir /b ^| findstr /i "^sed[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]$"') DO del %%a

0voto

farhandahari Punkte 1

Ich weiß, das ist alt. Aber ich möchte nur mit den Leuten teilen, was ich getan habe, die dies verursachen.

Es war in der Tat die temporäre Datei für eine bereits geöffnete Datei durch gvim Beispiel .swap Datei, dass die sed tmp Datei nicht vollständig entfernt werden.

Sed versucht also, die geöffnete Datei, die der Benutzer gerade anschaut, zu lesen und an die Datei anzuhängen, und hat dabei Probleme, was den Fehler mit der tmp-Datei verursacht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X