Parece que no puedo encontrar cómo imprimir la fecha de un archivo. Hasta ahora puedo imprimir todos los archivos en un directorio, pero necesito imprimir las fechas con él.
Sé que necesito adjuntar un formato de fecha con el eco de la entrada, pero no puedo encontrar el formato correcto.
echo "Please type in the directory you want all the files to be listed"
read directory
for entry in "$directory"/*
do
echo "$entry"
done
Respuestas:
Puedes usar el
stat
comandoMás información
fuente
for entry in "$directory"/* do stat -c%y "$entry" done
No funciona Imprime estadística: operando perdido en la terminalstat
?stat -f "%m%t%Sm %N" filename
(verman stat
ejemplos para más detalles)stat
comando tiene una sintaxis diferente. Mi caso de FreeBSD:stat -f %Sm -t %F" "%R filename
.¿No es el comando 'date' mucho más simple? No hay necesidad de awk, stat, etc.
Además, considere buscar en la página del manual el formato de fecha; por ejemplo con formato común de fecha y hora:
fuente
date
no tiene esto. Su-r
sólo se utiliza para proporcionar una marca de tiempo a formato. Tendrá que usar la fecha GNU para obtener esta funcionalidad.stat -f "%Sm" -t "%m%d%H%M%y" "${1}"
date [-r seconds | filename]
está completamente documentado en laman
página y funciona como se esperaba.En OS X, me gusta que mi fecha esté en el formato de
YYYY-MM-DD HH:MM
la salida para el archivo.Entonces, para especificar un archivo que usaría:
Si quiero ejecutarlo en un rango de archivos, puedo hacer algo como esto:
Este ejemplo se imprimirá la última vez que ejecuté el
sudo periodic daily weekly monthly
comando, ya que hace referencia a los archivos de registro.Para agregar los nombres de archivo en cada fecha, ejecutaría lo siguiente en su lugar:
El resultado sería el siguiente:
Desafortunadamente, no estoy seguro de cómo evitar el salto de línea y mantener el nombre del archivo adjunto al final de la fecha sin agregar más líneas al script.
PD: lo uso
#!/usr/bin/env bash
como usuario de Python por día, y tengo diferentes versionesbash
instaladas en mi sistema en lugar de#!/bin/bash
fuente
echo -e "$(stat -f %Sm -t %Y%m%d_%H%M%S $AFile)\t$AFile."
. En su caso, podría ser:echo -e "$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i")\t$i."
`Lo mejor es
fuente
Agregando a la respuesta @StevePenny, es posible que desee cortar la parte no tan legible para los humanos:
fuente
Quería obtener la fecha de modificación de un archivo en
YYYYMMDDHHMMSS
formato. Así es como lo hice:Explicación. Es la combinación de estos comandos:
fuente
EDITADO: resulta que había olvidado las comillas necesarias para
$entry
imprimir correctamente y no dar el error "no existe tal archivo o directorio". ¡Muchas gracias a todos por ayudarme!Aquí está mi código final:
Se imprime así:
fuente
Para los saltos de línea, edité su código para obtener algo sin saltos de línea.
fuente
Si el nombre del archivo no tiene espacios:
Esto se imprime con el siguiente formato:
Si los nombres de archivo tienen espacio (también puede usar el siguiente comando para nombres de archivo sin espacios, solo se ve complicado / feo que el anterior):
fuente
<dir>
que no existe ... el código está perfectamente bien.Puedes usar:
Esto mostrará la fecha en 2 dígitos.
Si entre 1 y 9 le agrega el prefijo "0" y lo convierte a 01-09.
Espero que esto cumpla con las expectativas.
fuente