Format von Dateigrösse und Datum in bash anpassen

Schon oft hatte ich das Problem unter Linux, dass die Dateigrössen und auch die Änderungszeit von Dateien zwar in einem für angeblich für Menschen verständlichen Format ausgegeben werden, aber gut lesbar oder sogar vergleichbar sind diese nicht. Auch die Ausgabe mit -h bei ls hilft mir wenig, da damit die Einheiten (Keine Angabe für Byte, […]

Schon oft hatte ich das Problem unter Linux, dass die Dateigrössen und auch die Änderungszeit von Dateien zwar in einem für angeblich für Menschen verständlichen Format ausgegeben werden, aber gut lesbar oder sogar vergleichbar sind diese nicht.

Auch die Ausgabe mit -h bei ls hilft mir wenig, da damit die Einheiten (Keine Angabe für Byte, K für Kilobyte, M für Megabyte) gemischt dargestellt werden und somit die Dateigrössen nicht auf einen Blick vergleichbar sind. Auch ist das Datumsformat einmal mit Monat, Tag und Uhrzeit angegeben, wenn die Datei jedoch aus einem anderen als dem aktuellen Jahr ist (hier in der Ausgabe das Verzeichnis proc), wechselt das Format zu Monat, Tag und Jahr. Dass in der Spalte einmal die Uhrzeit und ein anderes mal die Zeit steht finde ich nicht übersichtlich.

ls -lh /
insgesamt 75K
drwxr-xr-x   2 root root 4,0K Mai 22 20:09 bin
drwxr-xr-x   4 root root 2,5K Mai 22 20:12 boot
-rw-r--r--   1 root root 1,7K Mai 22 20:21 certbot.log
drwxr-xr-x  14 root root 3,2K Mai 22 10:17 dev
drwxr-xr-x  87 root root 4,0K Mai 23 16:33 etc
drwxr-xr-x   3 root root 4,0K Mai 18 10:31 home
drwxr-xr-x  17 root root 4,0K Mai 22 20:09 lib
drwx------   2 root root  16K Apr 10 09:57 lost+found
drwxr-xr-x   2 root root 4,0K Apr 10 09:10 media
drwxr-xr-x   2 root root 4,0K Mai 18 17:29 mnt
drwxr-xr-x   3 root root 4,0K Apr 10 09:17 opt
dr-xr-xr-x 125 root root    0 Jan  1  1970 proc
drwx------   7 root root 4,0K Mai 23 16:27 root
drwxr-xr-x  20 root root  780 Mai 22 20:11 run
drwxr-xr-x   2 root root 4,0K Mai 22 20:10 sbin
drwxr-xr-x   2 root root 4,0K Apr 10 09:10 srv
dr-xr-xr-x  12 root root    0 Mai 22 20:03 sys
drwxrwxrwt   8 root root 4,0K Mai 23 18:17 tmp
drwxr-xr-x  10 root root 4,0K Apr 10 09:10 usr
drwxr-xr-x  12 root root 4,0K Mai 22 20:21 var

Am Beispiel mit df -h wird dieses Problem offensichtlicher. Hier kann die Grösse erst korrekt erkannt werden kann, wenn bei jedem Eintrag die Einheit gelesen wird.

df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root        30G    3,1G   26G   11% /
devtmpfs        486M       0  486M    0% /dev
tmpfs           490M       0  490M    0% /dev/shm
tmpfs           490M     19M  471M    4% /run
tmpfs           5,0M    4,0K  5,0M    1% /run/lock
tmpfs           490M       0  490M    0% /sys/fs/cgroup
/dev/mmcblk0p1   41M     21M   20M   52% /boot

Zeitformat

Um die Zeitangabe bei ls im ISO-Format anzuzeigen muss TIME_STYLE=long-iso in die ~/.bashrc mit folgendem Befehl hinzugefügt werden. Da das Format in die Datei ~/.bashrc bei vom aktuellen Benutzer hinzugefügt wird und nur bei diesem Auswirkungen hat, muss diese Einstellungen bei anderen Benutzern ebenfalls durchgeführt werden, falls dieser ein anderen Format in der Ausgabe haben möchte.

echo "export TIME_STYLE=long-iso" | tee -a ~/.bashrc

Dateigrösse

Auch diese Einstellung wird nur für den aktuellen Benutzer durchgeführt.

echo "export BLOCK_SIZE=\"'1\"" | tee -a ~/.bashrc

Ergebnisse

Sowohl die Grösse von Verzeichnissen und Dateien werden jetzt mit einem Tausendertrennzeichen angezeigt und auch das Datum ist jetzt einheitlich.

insgesamt 76.288
drwxr-xr-x   2 root root  4.096 2017-05-22 20:09 bin
drwxr-xr-x   4 root root  2.560 2017-05-22 20:12 boot
-rw-r--r--   1 root root  1.708 2017-05-22 20:21 certbot.log
drwxr-xr-x  14 root root  3.260 2017-05-22 10:17 dev
drwxr-xr-x  83 root root  4.096 2017-05-22 20:19 etc
drwxr-xr-x   3 root root  4.096 2017-05-18 10:31 home
drwxr-xr-x  17 root root  4.096 2017-05-22 20:09 lib
drwx------   2 root root 16.384 2017-04-10 09:57 lost+found
drwxr-xr-x   2 root root  4.096 2017-04-10 09:10 media
drwxr-xr-x   2 root root  4.096 2017-05-18 17:29 mnt
drwxr-xr-x   3 root root  4.096 2017-04-10 09:17 opt
dr-xr-xr-x 125 root root      0 1970-01-01 00:00 proc
drwx------   4 root root  4.096 2017-05-22 20:22 root
drwxr-xr-x  20 root root    780 2017-05-22 20:11 run
drwxr-xr-x   2 root root  4.096 2017-05-22 20:10 sbin
drwxr-xr-x   2 root root  4.096 2017-04-10 09:10 srv
dr-xr-xr-x  12 root root      0 2017-05-22 20:03 sys
drwxrwxrwt   7 root root  4.096 2017-05-22 20:31 tmp
drwxr-xr-x  10 root root  4.096 2017-04-10 09:10 usr
drwxr-xr-x  12 root root  4.096 2017-05-22 20:21 var

Auch die Ausgabe von anderen Programmen wie df für die Speicherverwendung von Mountpoints ist jetzt entsprechend formatiert.

df
Dateisystem         1B-Blöcke       Benutzt      Verfügbar Verw% Eingehängt auf
/dev/root      31.460.159.488 3.204.505.600 26.951.512.064   11% /
devtmpfs          508.854.272             0    508.854.272    0% /dev
tmpfs             513.290.240             0    513.290.240    0% /dev/shm
tmpfs             513.290.240     6.795.264    506.494.976    2% /run
tmpfs               5.242.880         4.096      5.238.784    1% /run/lock
tmpfs             513.290.240             0    513.290.240    0% /sys/fs/cgroup
/dev/mmcblk0p1     42.313.728    21.895.680     20.418.048   52% /boot

Diese Anzeige ist zwar Anfangs ungewohnt, jedoch kann schnell zwischen den Grössen unterschieden werden ohne erst die Einheit in jeder Zeile lesen zu müssen.

2 Antworten auf „Format von Dateigrösse und Datum in bash anpassen“

  1. DerFritz sagt:

    Damit das Tausender-Trennzeichen in „.“ und nicht in „,“ angezeigt wird, ist ggf. noch „export LC_NUMERIC=de_DE“ in die .bashrc einzutragen.

    1. blar sagt:

      Vielen Dank für den Hinweis über die fehlende Einstellung bei den Locales.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.