Linux / Comando / touch / Criando arquivos vazios e alterando o horário da última modificação

No Linux, touch cria um arquivo vazio se ele não existir, e se o arquivo existir, atualiza os horários de acesso e modificação para o horário atual por padrão. Ele não apaga o conteúdo de arquivos existentes, mas pode afetar backups ou operações de compilação que dependem de informações de tempo.

Criando arquivos vazios

O comando a seguir cria um arquivo vazio no diretório atual se example.txt não existir. Os exemplos subsequentes são baseados em touch e stat do GNU coreutils. Execute-os em um diretório de prática vazio separado para evitar afetar dados existentes.

touch example.txt
ls -l example.txt

Um arquivo com tamanho 0 aparecerá na lista. Se um arquivo com o mesmo nome já existir, ele não será sobrescrito por um novo arquivo vazio, mas o tempo do arquivo existente será atualizado. Se o nome contiver espaços, coloque-o entre aspas, como touch "my notes.txt". Se vários nomes forem listados separados por espaços, cada um será processado.

Verificando e Atualizando o Tempo de um Arquivo Existente

O tempo de acesso (atime) de um arquivo refere-se ao último acesso, e o tempo de modificação (mtime) refere-se à última modificação do conteúdo do arquivo. Por padrão, touch example.txt define ambos os tempos para o tempo atual. Você pode verificar antes e depois da alteração da seguinte maneira.

stat example.txt
touch example.txt
stat example.txt

Compare as entradas Access e Modify na saída de stat. O idioma real da saída e o formato de exibição podem variar dependendo do ambiente, e diferenças em intervalos muito curtos podem não ser visíveis devido à resolução de tempo do sistema de arquivos.

O tempo de alteração de status (ctime) está relacionado a mudanças em metadados, como permissões, e não é o mesmo que o tempo de criação. Alterar as informações de tempo com touch também pode atualizar o ctime, mas você não pode definir o ctime para um valor arbitrário ou alterar o tempo de criação. Se o tempo de acesso é atualizado a cada leitura também é afetado pelo sistema de arquivos e pelas configurações de montagem. Você pode verificar o significado de cada tempo em descrição do tempo de arquivo do GNU.

Alterando Apenas o Tempo de Acesso ou de Modificação

-a seleciona apenas o tempo de acesso, e -m seleciona apenas o tempo de modificação. Abaixo está um exemplo de alteração do tempo de modificação de um arquivo de prática para o tempo atual e verificação do resultado.

touch -m example.txt
stat example.txt

-a seleciona o horário de acesso, enquanto -m seleciona o horário de modificação. Isso não significa que o horário de mudança de status do arquivo será preservado. Se o arquivo não existir, um arquivo vazio será criado a menos que uma opção separada seja especificada.

Use um horário desejado ou o horário de outro arquivo

Você pode especificar a data e hora com GNU touch -d. O exemplo abaixo define os horários de acesso e modificação do arquivo de prática para o horário especificado.

touch -d '2024-01-15 10:30:00' example.txt
stat example.txt

Se o fuso horário não for especificado, a data e a hora serão interpretadas segundo a variável de ambiente TZ ou o fuso horário do sistema. Verifique se os horários de acesso e modificação de saída correspondem aos valores especificados. Os valores salvos podem variar dependendo da faixa e resolução suportadas pelo sistema de arquivos.

Para usar outro arquivo como referência, use -r. O seguinte é um exemplo quando ambos reference.txt e example.txt existem no diretório atual.

touch -r reference.txt example.txt
stat reference.txt example.txt

Defina os horários de acesso e modificação do arquivo de destino para os valores do arquivo de referência. Se o arquivo de referência não existir, ocorrerá um erro e, por padrão, um arquivo vazio pode ser criado se o destino não existir. Para opções detalhadas, consulte o manual GNU touch.

Atualize apenas o horário sem criar um arquivo

-c não cria um novo arquivo se o arquivo especificado não existir. O comando a seguir atualiza o horário para o horário atual se o arquivo já existir e não o cria se não existir.

touch -c example.txt

Como ele pode terminar sem erro mesmo quando o arquivo não existe, não use apenas o status de sucesso deste comando para verificar a existência do arquivo. Para criar um novo arquivo, é necessária permissão de gravação para o diretório pai, e a permissão para alterar o horário de um arquivo existente depende do proprietário e do horário que você deseja definir. Se ocorrer um erro, verifique o caminho e as permissões.