Você poderia me informar como posso alterar a data de criação de um arquivo no Lion. Sei que existe o comando touch-t, mas isso não funciona no Lion. Algumas pessoas mencionaram outra maneira, mas acho que escreveram a solução em linguagem “codificadora” em vez de linguagem leiga – alguém seria capaz de responder de uma forma que um leigo pode executar?

Muito obrigado pela sua ajuda.

Comentários

  • O ” codificador ” a explicação sobre a qual outras pessoas escreveram é provavelmente uma referência a ” touch “. Você ‘ d teria que abrir um Terminal, navegar até a pasta onde o arquivo está e usar o comando touch para modificar a data de criação do arquivo ‘ s.
  • FWIW Você está nas linhas certas com ” touch-t “, mas há um espaço entre he -. É ‘ s ” touch -t ”

Resposta

touch -t normalmente altera apenas os tempos de modificação e acesso. Só muda a hora de criação se a hora alvo for anterior à hora de criação 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 sempre muda o tempo de criação.

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

SetFile é parte do pacote de ferramentas de linha de comando que pode ser baixado do desenvolvedor .apple.com / downloads ou nas preferências do Xcode.

Comentários

  • -m para alterar o tempo de modificação.
  • No Yosemite, toque exigia que eu usasse o formato +%Y%m%d%H%M.%S (observe o ponto entre minutos e segundos)
  • Eu escrevi uma função chamada CpCreationDate em fish : SetFile -d (GetFileInfo -m $argv[1]) $argv[2]

Resposta

No Mac OS X parece haver quatro carimbos de data / hora diferentes associados a um arquivo. Esses carimbos de data / hora nem sempre são atualizados independentemente uns dos outros, mas pode-se ter algum controle ual com um pouco de cuidado e com o uso de touch, SetFile e chown (ou chmod). Para ver isso, vamos experimentar e criar um novo arquivo no prompt de comando #:

# 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 

O a primeira data listada é a hora do último acesso (atime), a segunda é a hora da última modificação (mtime), a terceira é a última mudança de status ( ctime), a quarta é a hora de criação do arquivo (nascimento, Btime), consulte man lstat.

Para modificar o tempo de acesso (atime) para um tempo especificado, 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 a hora da modificação (mtime) e a hora da criação do arquivo (Btime) para uma hora especificada use:

# 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, isso também atualiza automaticamente a hora da última mudança de status (ctime) para a hora atual do sistema!

Para modificar apenas a hora de criação / nascimento (Btime) para uma determinada hora, use (as pr oposta por outros acima):

# 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 apenas a hora da última mudança de status (ctime) para o uso atual da hora do sistema, por exemplo:

# 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 

onde username é o proprietário do arquivo (conforme relatado por stat ou ls -l). Isso não altera a propriedade do arquivo, mas acessa o inode do arquivo e o registra como um horário da última alteração de status. Infelizmente, não é possível especificar a hora explicitamente aqui, a não ser alterando a hora do computador …

Em resumo, para ser capaz de alterar os quatro carimbos de data / hora independentemente, pode-se usar (neste pedido dos ú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. [definir data do sistema] chown username <file> [reverter para a data normal do sistema]

(Claro, redefinir a data do sistema pode não ser uma operação sem riscos, você foi avisado.)

Comentários

  • +1 Obrigado por esta resposta superdetalhada. Isso resolveu todos os meus problemas.
  • Às vezes acabo com fotos com datas incorretas porque minha GoPro se reinicializa. Eu transfiro essas fotos para o meu Mac e ajusto a data de acordo com essas instruções, mas quando transfiro essas fotos para o meu iPhone, a data ainda está errada. A única maneira que ‘ encontrei de corrigir isso é com um editor EXIF do iOS. Existe ainda outro atributo de data oculto em algum lugar?
  • @Bowen: as datas às quais você se refere em uma foto fazem parte dos dados do próprio formato de arquivo da foto. A data de criação, data de modificação, etc. dos arquivos mencionados acima são aqueles gerenciados pelo sistema de arquivos de seu sistema operacional, eles são mantidos e atualizados separadamente dos dados contidos no arquivo.

Resposta

O comando touch da linha de comando funciona no Lion, mas você precisa de algumas informações básicas sobre como use-o.

Em primeiro lugar, você precisa digitá-lo, não é um utilitário que opera graficamente em uma janela. O local em que você o digita é um aplicativo chamado Terminal . Você pode encontrar isso na pasta Utilitários ou usar a pesquisa do Spotlight para encontrá-lo.

Depois de iniciá-lo, você obtém uma janela de linha de comando onde pode digitar comandos. Só porque você está digitando, não ” Isso significa que tem algo a ver com codificação, mas para alguém que não conhece os comandos do sistema operacional “antiquados”, pode parecer um pouco intimidante.

Portanto, o comando é chamado de toque , e após o comando você pode passar vários parâmetros, o único necessário sendo o nome do arquivo. Digitar o seguinte definirá a data da última modificação do arquivo para a hora atual:

touch filename 

Claro, você pode precisar encontrar o arquivo primeiro, o que pode requer mais comandos para acessá-lo. o comando cd ou Alterar diretório ajuda aqui:

cd ~/Desktop/files/PDFs touch filename 

Ou você pode simplesmente adicionar o completo caminho para o arquivo como parte do comando:

touch ~/Desktop/files/PDFs/filename 

O uso mais avançado do comando de toque permite que você especifique a hora que deseja definir, em vez de usar o tempo na execução, definir o acesso ao invés dos tempos de modificação etc. Isso é o que parâmetros como -t e outros fazem. Alguns definem a hora como a hora de outro arquivo, outros o definem para retroceder ou avançar no tempo em uma quantidade X, ( veja aqui para obter mais detalhes) , por exemplo:

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

O seguinte é desta página que também é referência útil e um ótimo exemplo com algumas dicas para aqueles que se sentem desconfortáveis com a localização de arquivos na linha de comando

Observe que isso mudará os atributos de data de modificação e data de criação apenas se o seu arquivo foi criado após o data em que você entra. Isso ocorre porque um arquivo não pode ser modificado antes de ser criado. Se criado antes da data definida, apenas a data de modificação será alterada.

Como alterar o atributo de data de criação de um arquivo?

  1. Abra o aplicativo Terminal (/Applications/Utilities/Terminal.app) ou, se preferir, use o iTerm.

  2. Digite isso no Terminal (sem pressionar enter / return) inserindo a data no formato de YYYYMMDDhhmm:

    touch -t 201212211111 
  3. Abra uma janela do Finder e localize o arquivo que deseja modificar e arraste e solte-o na janela do Terminal. Em seguida, ele inserirá o local do arquivo usando a terminologia da linha de comando. Aqui está um exemplo do que deve ser digitado no Terminal neste momento:

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

    201212211111 no exemplo acima representa “21 de dezembro de 2012 11h11

Comentários

  • Mas touch modifica a data de modificação, não a data de criação do arquivo.
  • Ele pode fazer as duas coisas. Depende dos parâmetros.
  • Usar touch com os parâmetros fornecidos acima mudou as datas de modificação, mas não de criação, para meu arquivo de teste.
  • @Daniel Você provavelmente obteve sua resposta, mas para fins de integridade touch se modifica a data de criação dependendo dos argumentos. Se você fornecer uma data de modificação anterior à data de criação do arquivo ‘, a data de criação será alterada automaticamente para o novo valor da data de modificação, pois um arquivo não pode ser modificado antes de ser criado .
  • Acabei de experimentar isso no Sierra e o touch definitivamente não altera a data creation. Consegui alterar as datas access e modified para uma data ” no passado “, mas não modificou a data de criação. Verifique se há toque na página do manual, ela não menciona a data de criação. Sistema de arquivos: Mac OS Extended (registrado, criptografado). Usar SetFile -d "$(GetFileInfo -m test.txt)" file.txt funcionou perfeitamente.

Resposta

Grandes dicas aqui , em particular o último (de Lauri Ranta, respondida em 21/08 às 15h21). Perfekt!

Agora eu uso um fluxo de trabalho simples do Automator para alterar vários arquivos em lote:

  1. Obter itens selecionados do Finder
  2. Executar Shell Script, “Passar entrada : as arguments “

O script de shell é:

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

Isso funciona perfeitamente.

Resposta

A maneira mais fácil que encontrei foi criar uma nova pasta, copiar todas as subpastas da pasta esmaecida na nova pasta e pronto, a nova pasta não está esmaecida. Você pode até fazer isso no localizador.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *