Ich kann anscheinend nicht herausfinden, wie das Datum einer Datei ausgedruckt werden soll. Ich bin bisher in der Lage, alle Dateien in einem Verzeichnis auszudrucken, aber ich muss die Daten damit ausdrucken.
Ich weiß, dass ich ein Datumsformat mit dem Echo des Eintrags anhängen muss, aber alles, was ich nicht finden kann, ist das richtige Format.
echo "Please type in the directory you want all the files to be listed"
read directory
for entry in "$directory"/*
do
echo "$entry"
done
Antworten:
Sie können den
stat
Befehl verwendenMehr Info
quelle
for entry in "$directory"/* do stat -c%y "$entry" done
Funktioniert nichtstat
werden?stat -f "%m%t%Sm %N" filename
(sieheman stat
Beispiele für weitere Details)stat
Befehl unter BSD eine andere Syntax hat. Mein Fall für FreeBSD :stat -f %Sm -t %F" "%R filename
.Ist der Befehl 'Datum' nicht viel einfacher? Keine Notwendigkeit für awk, stat, etc.
Überprüfen Sie auch die Manpage auf Datumsformatierung. Zum Beispiel mit dem üblichen Datums- und Uhrzeitformat:
quelle
date
dies nicht haben. Es-r
wird nur verwendet, um einen Zeitstempel zum Formatieren bereitzustellen. Sie müssen das GNU-Datum verwenden, um diese Funktionalität zu erhalten.stat -f "%Sm" -t "%m%d%H%M%y" "${1}"
date [-r seconds | filename]
ist auf derman
Seite vollständig dokumentiert und funktioniert wie erwartet.Unter OS X möchte ich, dass mein Datum im Format
YYYY-MM-DD HH:MM
der Ausgabe für die Datei vorliegt.Um eine Datei anzugeben, würde ich Folgendes verwenden:
Wenn ich es für eine Reihe von Dateien ausführen möchte, kann ich Folgendes tun:
In diesem Beispiel wird das letzte Mal gedruckt, als ich den
sudo periodic daily weekly monthly
Befehl ausgeführt habe, da er auf die Protokolldateien verweist.Um die Dateinamen unter jedem Datum hinzuzufügen, würde ich stattdessen Folgendes ausführen:
Die Ausgabe wäre die folgende:
Leider bin ich mir nicht sicher, wie ich den Zeilenumbruch verhindern und den Dateinamen an das Ende des Datums anhängen kann, ohne dem Skript weitere Zeilen hinzuzufügen.
PS - Ich verwende es
#!/usr/bin/env bash
tagsüber als Python-Benutzer und habebash
stattdessen verschiedene Versionen von auf meinem System installiert#!/bin/bash
quelle
echo -e "$(stat -f %Sm -t %Y%m%d_%H%M%S $AFile)\t$AFile."
. In Ihrem Fall könnte es sein:echo -e "$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i")\t$i."
`Das Beste ist
quelle
Wenn Sie die Antwort von @StevePenny hinzufügen, möchten Sie möglicherweise den nicht so menschlich lesbaren Teil ausschneiden:
quelle
Ich wollte das Änderungsdatum einer Datei im
YYYYMMDDHHMMSS
Format erhalten. So habe ich es gemacht:Erläuterung. Es ist die Kombination dieser Befehle:
quelle
BEARBEITET: Es stellt sich heraus, dass ich die Anführungszeichen vergessen habe, die
$entry
zum korrekten Drucken erforderlich sind, und nicht den Fehler "Keine solche Datei oder kein solches Verzeichnis" ausgegeben habe. Vielen Dank, dass Sie mir geholfen haben!Hier ist mein endgültiger Code:
Druckt wie folgt aus:
quelle
Für die Zeilenumbrüche habe ich Ihren Code bearbeitet, um etwas ohne Zeilenumbrüche zu erhalten.
quelle
Wenn der Dateiname keine Leerzeichen enthält:
Dies wird im folgenden Format gedruckt:
Wenn Dateinamen Leerzeichen haben (Sie können den folgenden Befehl auch für Dateinamen ohne Leerzeichen verwenden, es sieht nur kompliziert / hässlich aus als das erstere):
quelle
<dir>
nicht existiert. Der Code ist vollkommen in Ordnung.Sie können verwenden:
Dadurch wird das Datum zweistellig angezeigt.
Wenn zwischen 1 bis 9 , wird das Präfix "0" hinzugefügt und in 01 - 09 konvertiert.
Hoffe das entspricht den Erwartungen.
quelle