Mein Linux-Befehl istKatze eine Datei und überprüfen Sie es in einer Zeile
cat /etc/myfile.txt > newfile.txt
Meine Frage ist, wie Sie überprüfen, ob die Datei /etc/myfile.txt nicht leer ist und speichern
die Datei in eine Befehlszeile
Mein Linux-Befehl istKatze eine Datei und überprüfen Sie es in einer Zeile
cat /etc/myfile.txt > newfile.txt
Meine Frage ist, wie Sie überprüfen, ob die Datei /etc/myfile.txt nicht leer ist und speichern
die Datei in eine Befehlszeile
Sie die bedingte Ausdrücke in bash
verwenden könnte die Datei vorhanden ist (-f
Flag) und nicht leer mit seiner -s
Flagge zu überprüfen.
Auch Sie könnten einfach cp
verwenden, um eine neue Kopie der Datei anstelle von cat
-es zu erstellen.
Nicht sicher, warum Sie die Verwendung einer einzeiligen anstelle von ordnungsgemäß lesbaren Beispiel verwenden würden. Auf jeden Fall können Sie die obigen Logik als
[[ -f /etc/myfile.txt && -s /etc/myfile.txt ]] && cp /etc/myfile.txt newfile.txt
[ -s "/etc/myfile.txt" ] && cat /etc/myfile.txt > newfile.txt
Sie haben noch zu cat
die Datei verwenden, verwenden cp
statt.
Hier prüft die Option -s
, ob die Datei eine Größe ungleich Null hat. Von man test
auf einem Linux-Box,
-s FILE
FILE exists and has a size greater than zero
EDIT: Über Lösung genügt, wenn /etc/myfile.txt
eine reguläre Datei ist. Wenn man will, es zu überprüfen, ob eine normale Datei ist vor dem Prüfen die non-zero
Größe, -f
Flagge
[[ -f "/etc/myfile.txt" && -s "/etc/myfile.txt" ]] && cp /etc/myfile.txt newfile.txt
Dieser Test gibt auch true für Verzeichnisse mit einer Größe größer als 0 zurück. Zum Beispiel "/ etc" auf meinem Rechner hat eine Größe von 4kB, '[-s"/etc "]' true wahr bei "/ proc" was hat eine Größe von 0 auf meinem Rechner gibt es false zurück. – confetti
benötigt wird, bin ich nicht sicher, warum meine Kommentare gelöscht wurden, aber ich denke immer noch '-r' könnte nützlich sein. Oder hast du etwas gefunden, das etwas anderes sagen würde? – PesaThe
Behalten Sie es ein wenig lesbar Ich würde etwas wie 'test -f /etc/myfile.txt &&test -s /etc/myfile.txt && cp /etc/myfile.txt newfile.txt 'schreiben, wenn ein oneliner benötigt wird. –