wie lösche ich den Inhalt aller Dateien mit der Erweiterung .dat in einem Verzeichnis?

wie lösche ich den Inhalt aller Dateien mit der Erweiterung .dat in einem Verzeichnis?

In einem Verzeichnis habe ich einige Dateien mit der Erweiterung .dat und möchte alle diese Dateien leeren, ohne sie aus dem Verzeichnis zu löschen.

Ich habe versucht, es so zu erreichen, aber es hat nicht funktioniert

> *.dat
-bash: *.dat: ambiguous redirect

Antwort1

Du könntest es tun:

:|tee -- *.dat

Oder das zsh(mit multios) Äquivalent:

:>*.dat

Da dadurch jedoch alle Dateien gleichzeitig geöffnet werden, erreichen Sie bei einer großen Anzahl von Dateien möglicherweise die Beschränkung der maximalen Anzahl geöffneter Dateideskriptoren.

Antwort2

versuchen

for x in *.dat
do
    > "$x"
done

Dies durchläuft grundsätzlich eine Schleife aller Dateien und führt eine >für sie aus.

Antwort3

Wenn Ihr System über das truncateDienstprogramm (von GNU coreutils) verfügt, können Sie Folgendes tun

truncate -s 0 -c -- *.dat

Dadurch -s 0wird die Größe auf Null gesetzt und -cdie Erstellung einer neuen Datei mit wörtlichem Namen verhindert, *.datfalls keine Übereinstimmungen vorhanden sind und Ihre Shell *.datin diesem Fall die Datei nicht erweitert zurückgibt.

verwandte Informationen