Cambio de la fecha de creación de un archivo

60

¿Podría por favor hacerme saber cómo puedo cambiar la fecha de creación de un archivo en Lion? Me doy cuenta de que existe el comando touch-t, pero eso no funciona en Lion. Un par de personas han mencionado otra manera, pero creo que han escrito la solución en lenguaje "codificador" en lugar de en lenguaje lego. ¿Alguien podría responderla de una manera que un lego pueda ejecutar?

Muchas gracias por tu ayuda.

    
pregunta user55502 21.08.2013 - 00:37

5 respuestas

91

touch -t normalmente solo cambia los tiempos de modificación y acceso. Solo cambia el tiempo de creación si el tiempo objetivo es anterior al tiempo 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 el tiempo 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 la línea de comandos que se puede descargar desde developer.apple.com/downloads o desde Xcode's preferencias.

    
respondido por el user495470 21.08.2013 - 17:21
13

En Mac OS X, parece que hay cuatro marcas de tiempo diferentes asociadas con un archivo. Estas marcas de tiempo no siempre se actualizan independientemente unas de otras, pero se puede tener cierto control individual con un poco de cuidado y con el uso de touch , SetFile y chown (o chmod ). Para ver esto, experimentemos y creemos un nuevo archivo desde el símbolo del sistema # :

# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username 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 indicada es la última vez que se accedió ( atime ), la segunda es la última fecha 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 ), vea man lstat .

Para modificar el tiempo de acceso ( atime ) a un tiempo específico, use:

# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username 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 el tiempo de modificación ( mtime ) y tiempo de creación del archivo ( Btime ) para un uso del tiempo especificado:

# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username 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 actual del sistema!

Para modificar solo el tiempo de creación / nacimiento ( Btime ) a un tiempo determinado, use (como lo propusieron otros):

# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username 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 solo la hora del último cambio de estado ( ctime ) a la hora actual del sistema, por ejemplo:

# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username 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 username es el propietario del archivo (según lo informado por stat o ls -l ). Esto no cambia la propiedad del archivo, pero accede al inodo del archivo y lo registra como el momento del último cambio de estado. Desafortunadamente, no es posible especificar la hora aquí explícitamente, excepto cambiando 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 <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [establecer fecha del sistema] chown username <file> [volver a la fecha normal del sistema]

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

    
respondido por el armando.sano 18.05.2015 - 16:31
13

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

En primer lugar, debe escribirlo, no es una utilidad que funcione gráficamente en una ventana. El lugar donde lo escriba es una aplicación llamada Terminal . Puede encontrar esto en su 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. El hecho de que esté escribiendo no significa que tenga nada que ver con la codificación, pero para alguien nuevo en los comandos del sistema operativo "tradicional" puede parecer un poco intimidante.

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

touch filename

Por supuesto, es posible que tengas que buscar primero el archivo, lo que podría requerir más comandos para acceder a él. el comando cd o Cambiar directorio ayuda aquí:

cd ~/Desktop/files/PDFs
touch filename

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

touch ~/Desktop/files/PDFs/filename

El uso más avanzado del comando táctil le permite especificar el tiempo que desea configurar, en lugar de usar el tiempo en la ejecución, establecer el acceso en lugar de modificar los tiempos, etc. Esto es lo que parámetros como -t y otros lo hacen. Algunos establecen el tiempo para que sea el tiempo de otro archivo, otros lo configuran para retroceder o avanzar en el tiempo en una cantidad de X, ( vea aquí para más detalles), por ejemplo:

touch -d '1 May 2005 10:22' file8

El 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 los archivos en la línea de comandos

Tenga en cuenta que esto cambiará tanto la fecha de modificación como la fecha de creación de los atributos solo si su archivo se creó después de la fecha de ingreso. Esto se debe a que un archivo no se puede modificar antes de que se haya creado. Si se creó antes de la fecha que estableció, solo se cambiará la fecha de modificación.

  

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

     
  1. Abre la aplicación de Terminal ( /Applications/Utilities/Terminal.app ) o si prefieres usar iTerm.

  2.   
  3. Escriba esto en la Terminal (sin pulsar Intro / retorno) insertando la fecha en el formato de YYYYMMDDhhmm :

    touch -t 201212211111
    
  4.   
  5. Abra una ventana del Finder y localice el archivo que desea modificar y arrástrelo y suéltelo en la ventana de la Terminal; a continuación, insertará la ubicación del archivo utilizando la terminología de la línea de comandos. Aquí hay un ejemplo de lo que se debe escribir en la Terminal en este punto:

    touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
    
         

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

  6.   
    
respondido por el stuffe 21.08.2013 - 15:53
7

Los grandes insinuaciones aquí, en particular el último (de Lauri Ranta, respondió el 21 de agosto a las 15:21). Perfekt!

Ahora utilizo un flujo de trabajo automatizado simple para cambiar por lotes varios archivos:

  1. Obtener elementos seleccionados del Finder
  2. Ejecutar el 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 como un encanto.

    
respondido por el Claudio Wilmanns 28.12.2013 - 23:31
0

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

    
respondido por el What Would Be Cool 15.08.2015 - 19:07

Lea otras preguntas en las etiquetas