it-swarm.com.de

Löschen Sie Dateien im Verzeichnis ohne Fehler, wenn es bereits leer ist

Als Teil eines Bereitstellungsskripts möchte ich einige zwischengespeicherte Daten aus meinem temporären Verzeichnis sichern. Ich benutze einen Befehl wie:

rm /tmp/our_cache/*

Jedoch, wenn /tmp/our_cache ist leer (ziemlich häufig, wenn viele Änderungen schnell hintereinander auf unseren Testserver übertragen werden). Dadurch wird die folgende Fehlermeldung ausgegeben:

rm: cannot remove `/tmp/our_cache/*': No such file or directory

Es ist keine große Sache, aber es ist ein wenig hässlich und ich möchte das Rausch-zu-Signal-Verhältnis in der Ausgabe dieses Skripts verringern.

Was ist eine prägnante Möglichkeit unter Unix, den Inhalt eines Verzeichnisses zu löschen, ohne dass Meldungen angezeigt werden, dass das Verzeichnis bereits leer ist?

34
Mark Amery

Da Sie vermutlich alle Dateien ohne Aufforderung entfernen möchten, können Sie den Schalter -f Auf rm verwenden, um nicht vorhandene Dateien zu ignorieren.

rm -f /tmp/our_cache/*

Von der Manpage:

-f, --force
          ignore nonexistent files, never Prompt

Wenn in /tmp/our_cache/ Unterverzeichnisse vorhanden sind und Sie möchten, dass diese und deren Inhalte ebenfalls gelöscht werden, vergessen Sie nicht den Schalter -r.

53
depquid
find /tmp/our_cache/ -mindepth 1 -delete

Edit 1

entfernt "-Typ f

Bearbeiten 2

Nicht standardmäßige Option hinzugefügt -mindepth 1, um zu verhindern, dass das Suchstammverzeichnis entfernt wird (nachdem Sie das -type f Einschränkung weg).

6
Hauke Laging

Sie können den Standardfehler auf /dev/null Umleiten, damit er nicht gedruckt wird

$  rm /tmp/our_cache/* 2>/dev/null
3
pradeepchhetri

Ein anderer Weg (wenn auch etwas übertrieben ...):

[ ! -z "$(ls -A /tmp/our_cache/)" ] && rm -rf /tmp/our_cache/*

dies verwendet test oder [, um zu testen, ob die Zeichenfolge, die beim Ausführen eines ls in Ihrem Verzeichnis zurückgegeben wurde, nicht leer ist. Wenn diese Zeichenfolge dann NICHT leer ist, wird alles in Ihrem Verzeichnis entfernt.

HINWEIS : Wenn Sie den Glob aus ls herauslassen, wird der Fehler unterdrückt, dass keine Dateien vorhanden sind.

1
h3rrmiller