Ich habe eine Datei namens diff.txt. Möchten Sie überprüfen, ob es leer ist. Habe so etwas gemacht, konnte es aber nicht zum Laufen bringen.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
diff
Anruf überprüfen möchten, überprüfen Sie einfach den Rückgabewert:if diff foo.txt bar.txt; then echo 'No difference'
if [ ! -s diff.txt ]; then echo "IS EMPTY";else echo "HAS SOMETHING";fi
$ cat diff.txt | hexdump -C
Antworten:
Rechtschreibfehler sind irritierend, nicht wahr? Überprüfen Sie Ihre Rechtschreibung von
empty
, aber versuchen Sie dann auch Folgendes:Ich mag Shell-Skripte sehr, aber ein Nachteil ist, dass die Shell Ihnen nicht helfen kann, wenn Sie falsch schreiben, während ein Compiler wie Ihr C ++ - Compiler Ihnen helfen kann.
Beachten Sie übrigens, dass ich die Rollen von
empty.txt
und getauscht habefull.txt
, wie @Matthias vorschlägt.quelle
empty=empty.txt; full=full.txt; diff=diff.txt; if [ -s ${diff?} ]; then r=${empty?} t=${full?}; else r=${full?} t=${empty?}; fi; rm ${r?}; touch ${t?}
set -u
quelle
[[ -s file.name ]] || { [[ -f file.name ]] && echo 'empty' || echo 'does not exist'; }
[[-s Datei]] -> Überprüft, ob die Datei größer als 0 ist
Bei Bedarf werden alle * .txt-Dateien im aktuellen Verzeichnis überprüft. und meldet alle leeren Dateien:
quelle
$(ls *.txt
und sollten es auch nicht. Einige Leute haben Standardeinstellungen fürls
das Langformat festgelegt (wie ich) und die Shell wird bereits von selbst erweitert*.txt
. Mach es einfachfor file in *.txt
stattdessen.find
:for file in $(find . -name '*.txt'); do if [[ ! -s $file ]]; then echo $file; fi; done
for file in $(ls *.txt); do
. Bitte verwenden Siefor file in *.txt; do
stattdessen; Bitte lesen Sie diese Bash Pitfalls-Seite . und bitte hör auf, solche Antimuster zu verbreiten.Während die anderen Antworten korrekt sind, zeigt die Verwendung der
"-s"
Option auch an, dass die Datei leer ist, auch wenn die Datei nicht vorhanden ist.Durch Hinzufügen dieser zusätzlichen Prüfung,
"-f"
um festzustellen, ob die Datei zuerst vorhanden ist, stellen wir sicher, dass das Ergebnis korrekt ist.quelle
@geououbleya Antwort ist mein Favorit.
Ich bevorzuge dies jedoch
quelle
Um zu überprüfen, ob die Datei leer ist oder nur Leerzeichen enthält , können Sie grep verwenden:
quelle
-s
beantwortet die Frage nicht. Es wird nach einer Datei gesucht, die vorhanden ist und eine Größe von mehr als 0 Byte hat.Viele der Antworten sind richtig, aber ich denke, sie könnten vollständiger / einfacher usw. sein, zum Beispiel:
Beispiel 1: Grundlegende if-Anweisung
Wenn $ read_file leer ist oder nicht, stoppen Sie die Show mit exit. Mehr als einmal habe ich die Top-Antwort hier falsch verstanden, um das Gegenteil zu bedeuten.
Beispiel 2: Als Funktion
quelle
quelle
Ich bin hierher gekommen, um zu suchen, wie leere
__init__.py
Dateien gelöscht werden können, da sie in Python 3.3+ enthalten sind, und habe am Ende Folgendes verwendet:Wenn Sie (zumindest in zsh) $ path als Variable verwenden, wird auch Ihre $ PATH-Umgebung beschädigt, sodass Ihre offene Shell beschädigt wird. Wie auch immer, dachte ich würde teilen!
quelle
Der einfachste Weg, eine Datei zu überprüfen, ist leer oder nicht:
Sie können es auch in einer Zeile schreiben:
quelle