Ako môžem zmeniť dátum modifikácie/vytvorenia súboru?

Existuje spôsob, ako zmeniť dátum, kedy bol súbor upravený/vytvorený (ktorý sa zobrazuje v programe Nautilus alebo pomocou príkazu ls -l)? V ideálnom prípade hľadám príkaz, ktorý by dokázal zmeniť dátum/čas celej skupiny súborov na určitý čas skôr alebo neskôr (napr. +8 hodín alebo -4 dni atď.).

Pokiaľ ste vlastníkom súboru (alebo rootom), môžete zmeniť čas modifikácie súboru pomocou príkazu touch:

touch filename

V predvolenom nastavení sa čas modifikácie súboru nastaví na aktuálny čas, ale existuje niekoľko príznakov, napríklad príznak -d, ktorý umožňuje vybrať konkrétny dátum. Ak teda chcete napríklad nastaviť súbor ako modifikovaný dve hodiny pred súčasnosťou, môžete použiť nasledujúci príznak:

touch -d "2 hours ago" filename

Ak chcete namiesto toho zmeniť súbor vzhľadom na jeho existujúci čas modifikácie, mali by ste použiť nasledujúci postup:

touch -d "$(date -R -r filename) - 2 hours" filename

Ak chcete upraviť veľký počet súborov, môžete použiť nasledujúce:

find DIRECTORY -print | while read filename; do
    # do whatever you want with the file
    touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done

Argumenty môžete zmeniť na find, aby ste vybrali len súbory, ktoré vás zaujímajú. Ak chcete aktualizovať iba časy modifikácie súborov vzhľadom na súčasný čas, môžete to zjednodušiť na:

find DIRECTORY -exec touch -d "2 hours ago" {} +

Tento tvar nie je'možný pri verzii s relatívnym časom súborov, pretože na vytvorenie argumentov pre touch sa používa shell.

Čo sa týka času vytvorenia, väčšina linuxových súborových systémov túto hodnotu nesleduje. So súbormi je síce spojený údaj ctime, ale ten sleduje, kedy boli naposledy zmenené metadáta súboru. Ak sa súboru nikdy nezmenili oprávnenia, môže sa stať, že bude uchovávať čas vytvorenia, ale to je náhoda. Explicitná zmena času modifikácie súboru sa počíta ako zmena metadát, takže bude mať aj vedľajší účinok aktualizácie ctime.

Komentáre (12)

Ďakujeme za pomoc. Toto mi pomohlo:

V termináli prejdite do adresára pre date-edit. Potom zadajte:

find -print | while read filename; do
    # do whatever you want with the file
    touch -t 201203101513 "$filename"
done

Po stlačení klávesu enter sa zobrazí ">", okrem posledného -> "done".

Poznámka: Možno budete chcieť zmeniť "201203101513"

"201203101513" = je dátum, ktorý chcete pre všetky súbory v tomto adresári.

Pozri moju webovú stránku

Komentáre (2)

stačí zmeniť dátum a čas v nastaveniach. potom súbor uložte, automaticky sa zmení

Komentáre (5)