82 votos

Cambiando la fecha de creación de un archivo

¿Podría por favor decirme cómo puedo cambiar la fecha de creación de un archivo en Lion? Me doy cuenta de que está el comando touch -t pero eso no funciona en Lion. Algunas personas han mencionado otra forma, pero creo que han escrito la solución en lenguaje "codificador" en lugar de en lenguaje común - ¿podría alguien responderlo de una manera que un lego pueda ejecutar?

Muchas gracias por su ayuda.

0 votos

La explicación "coder" que otras personas han escrito probablemente hace referencia a "touch". Tendrías que abrir una Terminal, navegar hasta la carpeta donde se encuentra el archivo y luego usar el comando touch para modificar la fecha de creación del archivo.

3 votos

FWIW Estás en el camino correcto con "touch-t", pero hay un espacio entre la h y el - . Es "touch -t"

124voto

touch -t normalmente solo cambia las horas de modificación y acceso. Solo cambia la hora de creación si la hora objetivo es anterior a la hora de creación original.

touch -t 199912312359 file.txt
touch -t $(date -jf %FT%T 1999-12-31T23:59:59 +%Y%m%d%H%M%S) file.txt

SetFile -d siempre cambia la hora de creación.

SetFile -d '12/31/1999 23:59:59' file.txt
SetFile -d "$(GetFileInfo -m test.txt)" file.txt

SetFile es parte del paquete de herramientas de línea de comandos que se puede instalar usando xcode-select --install o descargándolo desde developer.apple.com/downloads o desde las preferencias de Xcode.

5 votos

-m para cambiar la hora de modificación.

7 votos

En Yosemite, el formato que requería era +%Y%m%d%H%M.%S (nota el punto entre minutos y segundos)

0 votos

He escrito una función llamada CpCreationDate en fish: SetFile -d (GetFileInfo -m $argv[1]) $argv[2]

27voto

armando.sano Puntos 711

En Mac OS X parece haber cuatro marcas de tiempo diferentes asociadas con un archivo. Estas marcas de tiempo no siempre se actualizan de forma independiente, pero se puede tener un cierto control individual con un poco de cuidado y con el uso de touch, SetFile y chown (o chmod). Para ver esto, vamos a experimentar y crear un nuevo archivo desde el símbolo del sistema #:

# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 nombredeusuario staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

La primera fecha listada es la última vez de acceso (atime), la segunda es la última vez de modificación (mtime), la tercera es el último cambio de estado (ctime), la cuarta es la hora de creación del archivo (nacimiento, Btime), ver man lstat.

Para modificar la hora de acceso (atime) a una hora especificada use:

# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 nombredeusuario staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

Para modificar la hora de modificación (mtime) y la hora de creación del archivo (Btime) a una hora especificada use:

# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 nombredeusuario staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt

¡Aparentemente esto también actualiza automáticamente la hora del último cambio de estado (ctime) a la hora del sistema actual!

Para modificar solamente la hora de creación/nacimiento (Btime) a una hora dada, use (como propuesto por otros arriba):

# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 nombredeusuario staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

Para modificar solamente la hora del último cambio de estado (ctime) a la hora del sistema actual use por ejemplo:

# chown nombredeusuario a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 nombredeusuario staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

donde nombredeusuario es el propietario del archivo (como se informa en stat o ls -l). Esto no cambia la propiedad del archivo, pero accede al inodo del archivo y registra esto como una hora del último cambio de estado. Desafortunadamente, no es posible especificar explícitamente la hora aquí a menos que se cambie la hora de la computadora...

En resumen, para poder cambiar las cuatro marcas de tiempo de forma independiente, se puede usar (en este orden para los últimos 3):

  1. touch -a -tCCYYMMDDHH.SS
  2. touch -m -tCCYYMMDDHH.SS
  3. SetFile -d "MM/DD/CCYY HH:MM:SS"
  4. [establecer fecha del sistema] chown nombredeusuario [volver a la fecha normal del sistema]

(Por supuesto, restablecer la fecha del sistema puede no ser una operación sin riesgos, ¡has sido advertido!)

0 votos

+1 Gracias por esta respuesta súper detallada. Esto resolvió todos mis problemas.

0 votos

A veces termino con fotos que tienen fechas incorrectas porque mi GoPro se reinicia. Trasfiero estas fotos a mi Mac y arreglo la fecha siguiendo estas instrucciones, pero cuando transfiero estas fotos a mi iPhone, la fecha sigue estando mal. La única forma que he encontrado para arreglarlo es con un editor de EXIF de iOS. ¿Existe otra atributo de fecha oculto en algún lugar?

0 votos

@Bowen: Las fechas a las que haces referencia en una foto son parte de los datos del formato de archivo de la foto en sí misma. La fecha de creación, la fecha de modificación, etc. de los archivos mencionados anteriormente son aquellas que son gestionadas por el sistema de archivos de tu sistema operativo, se mantienen y actualizan por separado de los datos contenidos en el archivo.

14voto

mtnygard Puntos 141

El comando de línea de comandos touch funciona en Lion, pero necesitas un poco de conocimiento sobre cómo usarlo.

En primer lugar, necesitas escribirlo, no es una utilidad que opera gráficamente en una ventana. El lugar donde lo escribes es una aplicación llamada Terminal. Puedes encontrar esto en tu carpeta de Utilidades, o usar la búsqueda de Spotlight para encontrarlo.

Una vez que lo inicias, obtienes una ventana de línea de comandos donde puedes escribir comandos. Solo porque estés escribiendo no significa que tenga algo que ver con la codificación, pero para alguien nuevo en comandos de SO "anticuados" puede parecer un poco intimidante.

Entonces, el comando se llama touch, y después del comando puedes pasar varios parámetros, siendo el único requerido el nombre del archivo. Escribir lo siguiente establecerá la fecha de última modificación del archivo en el tiempo actual:

touch nombre_de_archivo

Por supuesto, es posible que necesites encontrar primero el archivo, lo que podría requerir más comandos para llegar a él. El comando cd o Change Directory te ayuda aquí:

cd ~/Escritorio/archivos/PDFs
touch nombre_de_archivo

O, simplemente puedes agregar la ruta completa al archivo como parte del comando:

touch ~/Escritorio/archivos/PDFs/nombre_de_archivo

El uso más avanzado del comando touch permite especificar la hora que deseas establecer, en lugar de usar la hora de ejecución, establecer accesos en lugar de tiempos de modificación, etc. Esto es lo que hacen parámetros como -t y otros. Algunos establecen la hora para ser la hora de otro archivo, otros la establecen para retroceder o avanzar en el tiempo por X cantidad, (ver aquí para más detalles), por ejemplo:

touch -d '1 mayo 2005 10:22' archivo8

Lo siguiente es de esta página que también es una referencia útil, y un gran ejemplo con algunos consejos para aquellos que no se sienten cómodos con las ubicaciones de archivos en la línea de comandos

Nota que esto cambiará tanto los atributos de fecha modificada como la fecha de creación solo si tu archivo fue creado después de la fecha que ingreses. Esto se debe a que un archivo no puede ser modificado antes de haber sido creado. Si fue creado antes de la fecha que establezcas, solo se cambiará la fecha modificada.

¿Cómo cambiar el atributo de fecha de creación de un archivo?

  1. Abre la aplicación Terminal (/Aplicaciones/Utilidades/Terminal.app) o si prefieres usa iTerm.

  2. Escribe esto en Terminal (sin presionar enter) insertando la fecha en formato AAAAMMDDhhmm:

    touch -t 201212211111
  3. Abre una ventana del Finder y localiza el archivo que deseas modificar y arrástralo hasta la ventana del Terminal, luego insertará la ubicación del archivo usando terminología de línea de comandos. Aquí tienes un ejemplo de lo que debería escribirse en Terminal en este punto:

    touch -t 201212211111 /Volúmenes/Mac\ HD/Imágenes/algunarchivo.jpg

    201212211111 en el ejemplo anterior representa "21 de diciembre de 2012 11:11 AM

2 votos

Pero touch modifica la fecha de modificación, no la fecha de creación del archivo.

1 votos

Puede hacer ambas cosas. Depende de los parámetros.

3 votos

Usar touch con los parámetros que proporcionaste arriba cambió las fechas de modificación pero no de creación para mi archivo de prueba.

9voto

Grandes consejos aquí, en particular el último (de Lauri Ranta, respondido el 21 de agosto a las 15:21). ¡Perfecto!

Ahora utilizo un sencillo Flujo de trabajo de Automator para cambiar por lotes varios archivos:

  1. Obtener elementos seleccionados en Finder
  2. Ejecutar script de shell, "Pasar entrada: como argumentos"

El script de shell es:

for f in "$@"
do
    SetFile -d "$(GetFileInfo -m "$f")" "$f" 
done

Esto funciona de maravilla.

0 votos

En primer lugar, muchas gracias por la pista. Tuve que modificar ligeramente tu solución, ya que ahora también funciona con 12.3.x Monterey. for f in "$@" do touch -t 202204171112 "$f" done solo cambia la fecha por la que prefieras. (Más detalles sobre el comando touch aquí: phoenixnap.com/kb/touch-command-in-linux#set-specific-timestamp)

-1voto

La forma más sencilla que encontré fue crear una nueva carpeta, copiar todas las subcarpetas de la carpeta con tono gris en la nueva carpeta, y voilà, la nueva carpeta no está en gris. Incluso puedes hacer esto en el buscador.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X