Je n'arrive pas à trouver comment imprimer la date d'un fichier. Je suis jusqu'à présent capable d'imprimer tous les fichiers dans un répertoire, mais je dois imprimer les dates avec.
Je sais que je dois joindre un format de date avec l'écho de l'entrée, mais tout ce que je ne trouve pas le bon 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
Réponses:
Vous pouvez utiliser la
stat
commandePlus d'informations
la source
for entry in "$directory"/* do stat -c%y "$entry" done
Ça ne marche pas. Imprime la statistique: opérande manquant dans le terminalstat
?stat -f "%m%t%Sm %N" filename
(voir lesman stat
exemples pour plus de détails)stat
commande a une syntaxe différente. Mon cas pour FreeBSD:stat -f %Sm -t %F" "%R filename
.La commande «date» n'est-elle pas beaucoup plus simple? Pas besoin de awk, stat, etc.
Pensez également à consulter la page de manuel pour le formatage de la date; par exemple avec un format de date et d'heure courant:
la source
date
ne l'ait pas. Il-r
est simplement utilisé pour fournir un horodatage au formatage. Vous devrez utiliser la date GNU pour obtenir cette fonctionnalité.stat -f "%Sm" -t "%m%d%H%M%y" "${1}"
date [-r seconds | filename]
est entièrement documenté dans laman
page et fonctionne comme prévu.Sous OS X, j'aime que ma date soit au format de
YYYY-MM-DD HH:MM
dans la sortie du fichier.Donc, pour spécifier un fichier, j'utiliserais:
Si je veux l'exécuter sur une gamme de fichiers, je peux faire quelque chose comme ceci:
Cet exemple s'imprimera la dernière fois que j'ai exécuté la
sudo periodic daily weekly monthly
commande car elle référence les fichiers journaux.Pour ajouter les noms de fichiers sous chaque date, j'exécuterais plutôt ce qui suit:
Le résultat serait le suivant:
Malheureusement, je ne sais pas comment empêcher le saut de ligne et conserver le nom du fichier ajouté à la fin de la date sans ajouter plus de lignes au script.
PS - J'utilise en
#!/usr/bin/env bash
tant qu'utilisateur Python de jour, et j'ai différentes versions debash
installées sur mon système au lieu de#!/bin/bash
la source
echo -e "$(stat -f %Sm -t %Y%m%d_%H%M%S $AFile)\t$AFile."
. Dans votre cas, cela pourrait être:echo -e "$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i")\t$i."
``Le mieux est
la source
En ajoutant à la réponse @StevePenny, vous voudrez peut-être couper la partie qui n'est pas si lisible par l'homme:
la source
Je voulais obtenir la date de modification d'un fichier au
YYYYMMDDHHMMSS
format. Voici comment je l'ai fait:Explication. C'est la combinaison de ces commandes:
la source
EDITED: il s'avère que j'avais oublié les citations nécessaires pour
$entry
imprimer correctement et ne pas donner l'erreur "aucun fichier ou répertoire de ce type". Merci à tous de m'avoir aidé!Voici mon code final:
S'imprime comme ceci:
la source
Pour les sauts de ligne, j'ai modifié votre code pour obtenir quelque chose sans saut de ligne.
la source
Si le nom du fichier n'a pas d'espaces:
Ceci s'imprime au format suivant:
Si les noms de fichiers ont de l'espace (vous pouvez utiliser la commande suivante pour les noms de fichiers sans espaces également, cela semble compliqué / moche que l'ancien):
la source
<dir>
qui n'existe pas ... le code est parfaitement bien.Vous pouvez utiliser:
Cela affichera la date sur 2 chiffres.
Si entre 1 et 9, il ajoute le préfixe «0» et se convertit en 01 - 09.
J'espère que cela répond aux attentes.
la source