
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 truncate
Dienstprogramm (von GNU coreutils) verfügt, können Sie Folgendes tun
truncate -s 0 -c -- *.dat
Dadurch -s 0
wird die Größe auf Null gesetzt und -c
die Erstellung einer neuen Datei mit wörtlichem Namen verhindert, *.dat
falls keine Übereinstimmungen vorhanden sind und Ihre Shell *.dat
in diesem Fall die Datei nicht erweitert zurückgibt.