Voisitteko kertoa minulle, kuinka voin muuttaa tiedoston luomispäivää Lionissa. Ymmärrän, että touch-t-komento on olemassa, mutta se ei toimi lionissa. Pari ihmistä on maininnut toisen tavan, mutta luulen, että he ovat kirjoittaneet ratkaisun ”kooderin” kielellä pikemminkin kuin maallikkokielellä – pystyisikö joku vastaamaan siihen tavalla, jonka maallikko voi toteuttaa?
Paljon kiitoksia avusta.
Kommentit
- ” -kooderi ” selitys, josta muut ihmiset ovat kirjoittaneet, on todennäköisesti viittaus ” touch ”. Sinä ’ d on avattava pääte, siirry kansioon, jossa tiedosto on, muokkaa sitten kosketuskomennolla fie ’ s -päivämäärää.
- FWIW Olet oikeilla linjoilla ” touch-t ” kanssa, mutta h: n ja -: n välillä on välilyönti. Se ’ s ” kosketa -t ”
vastaus
touch -t
muuttaa yleensä vain muokkaus- ja käyttöaikoja. Se muuttaa luomisaikaa vain, jos kohdeaika on ennen alkuperäistä luomisaikaa.
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
muuttuu aina luontiaika.
SetFile -d "12/31/1999 23:59:59" file.txt SetFile -d "$(GetFileInfo -m test.txt)" file.txt
SetFile on osa komentorivin työkalupakettia, jonka voi ladata -kehittäjältä. .apple.com / downloads tai Xcoden asetuksista.
Kommentit
- -m muutosajan muuttamiseksi.
- Yosemite-sovelluksessa kosketus vaati minua käyttämään muotoa
+%Y%m%d%H%M.%S
(huomaa piste minuutin ja sekunnin välillä) - Kirjoitin funktion nimeltä
CpCreationDate
ryhmässäfish
:SetFile -d (GetFileInfo -m $argv[1]) $argv[2]
vastaus
Mac OS X: ssä näyttää olevan neljä erilaista aikaleimaa tiedostoon. Nämä aikaleimat ei aina päivitetä toisistaan riippumatta, mutta voi olla joku yksilö ual-ohjaus vähän huolella ja touch
, SetFile
ja chown
avulla (tai chmod
). Näet tämän kokeilemalla ja luomalla uusi tiedosto komentokehotteesta #
:
# 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
ensimmäinen lueteltu päivämäärä on viimeinen käyttöaika (atime
), toinen on viimeisen muokkauksen aika (mtime
), kolmas on viimeinen tilan muutos ( ctime
), neljäs on tiedoston luomisen aika (syntymä, Btime
), katso man lstat
.
Muuta käyttöaika (atime
) tiettyyn aikaan:
# 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
Muokkaa muokkausaikaa (mtime
) ja tiedoston luomisen aika (Btime
) tiettyyn aikaan käyttö:
# 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
Tämä ilmeisesti myös päivittää viimeisen tilan muutoksen ajankohdan (ctime
) nykyinen järjestelmän aika!
Jos haluat muokata vain luomisen / syntymän aikaa (Btime
) tiettyyn aikaan, käytä (kuten pr muilta yllä mainituilta):
# 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
Muuta vain viimeisen tilan muutoksen aikaa (ctime
) nykyinen järjestelmän aikakäyttö esimerkiksi:
# 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
missä username
on tiedoston omistaja (kuten stat
tai ls -l
). Tämä ei muuta tiedoston omistajuutta, mutta käyttää tiedoston inodia ja tallentaa tämän viimeisen tilamuutoksen ajankohtana. Valitettavasti tässä ei ole mahdollista määrittää nimenomaisesti aikaa muuten kuin muuttamalla tietokoneen aikaa …
Yhteenvetona voidaan sanoa, että voidaksemme muuttaa neljää aikaleimaa itsenäisesti, voidaan käyttää (tässä järjestys viimeiselle 3: lle:
-
touch -a -tCCYYMMDDHH.SS <file>
-
touch -m -tCCYYMMDDHH.SS <file>
-
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
- [aseta järjestelmän päivämäärä]
chown username <file>
[palaa normaaliin järjestelmäpäivämäärään]
(Järjestelmän päivämäärän nollaaminen ei tietenkään ole riskitöntä toimintaa, sinua on varoitettu.)
Kommentit
- +1 Kiitos tästä erittäin yksityiskohtaisesta vastauksesta. Tämä ratkaisi kaikki ongelmani.
- Joskus pääsen valokuviin, joilla on väärät päivämäärät, koska GoPro nollaa itsensä. Siirrän nämä valokuvat Maciin ja korjaan päivämäärän näiden ohjeiden mukaan, mutta kun siirrän nämä valokuvat iPhoneen, päivämäärä on silti väärä. Ainoa tapa, jonka olen ’ löytänyt korjata, on iOS EXIF -editorilla. Onko jossain vielä toinen piilotettu päivämäärämääritelmä?
- @Bowen: Päivämäärät, joihin viitat valokuvassa, ovat osa itse kuvatiedostomuodon tietoja. Edellä mainittujen tiedostojen luomispäivä, muokkauspäivä jne. Ovat niitä, joita käyttöjärjestelmän tiedostojärjestelmä hallinnoi, niitä ylläpidetään ja päivitetään erikseen tiedostossa oleviin tietoihin.
Vastaa
Komentorivi touch
-komento toimii Lionissa, mutta tarvitset hieman taustaa käytä sitä.
Ensinnäkin sinun on kirjoitettava se sisään, se ei ole apuohjelma, joka toimii graafisesti ikkunassa. Paikka, johon kirjoitat, on sovellus nimeltä Terminal . Löydät tämän Utilities-kansiostasi tai voit löytää sen Spotlight-haulla.
Kun käynnistät sen, saat komentorivi-ikkunan, johon voit kirjoittaa komentoja. Vain siksi, että kirjoitat, ei ” Ei tarkoita, että sillä olisi mitään tekemistä koodauksen kanssa, mutta joku uusi ”vanhanaikaisille” käyttöjärjestelmäkomennoille voi näyttää hieman pelottavalta.
Joten komentoa kutsutaan nimellä kosketa , ja komennon jälkeen voit välittää useita parametreja, ainoa vaadittu parametri on tiedostonimi. Seuraavan kirjoittaminen asettaa tiedoston viimeisimmän muokatun päivämäärän nykyiseksi ajaksi:
touch filename
Tiedosto on ehkä etsittävä ensin, mikä voi vaatii lisää komentoja päästäksesi siihen. cd tai Muuta hakemistoa -komento auttaa tässä:
cd ~/Desktop/files/PDFs touch filename
Tai voit yksinkertaisesti lisätä koko polku tiedostoon komennon osana:
touch ~/Desktop/files/PDFs/filename
Kosketuskomennon edistyneempi käyttö antaa sinun määrittää ajan, jonka haluat asettaa, eikä käyttää suorituksen aika, aseta käyttöoikeus muokkausaikojen sijaan jne. Tätä parametrit, kuten -t ja muut tekevät. Jotkut asettavat ajan olevan toisen tiedoston aika, toiset asettavat sen palaamaan eteenpäin tai eteenpäin ajassa X-määrällä ( katso lisätietoja tästä ) , esim .:
touch -d "1 May 2005 10:22" file8
Seuraava on tältä sivulta , joka on myös hyödyllinen viite ja loistava esimerkki vinkkeineen niille, joille on epämukavaa käyttää tiedostojen sijaintia komentorivillä.
Huomaa, että tämä muuttaa sekä muokkauspäivämäärän että päivämäärämäärityksen attribuutteja vain, jos tiedosto luotiin antamasi päivämäärä. Tämä johtuu siitä, että tiedostoa ei voi muokata ennen kuin se on luotu. Jos se on luotu ennen määrittämäsi päivämäärää, vain muokattua päivämäärää muutetaan.
Kuinka muuttaa tiedoston luontipäivämääritettä?
Avaa Terminal-sovellus (
/Applications/Utilities/Terminal.app
) tai jos haluat mieluummin käyttää iTermiä.Kirjoita tämä terminaaliin (ilman Enter / Return-näppäintä) lisäämällä päivämäärä muodossa
YYYYMMDDhhmm
:touch -t 201212211111
Avaa Finder-ikkuna ja etsi muokattava tiedosto ja vedä ja pudota se Terminal-ikkunaan, ja se lisää sitten tiedoston sijainnin komentorivillä. Tässä on esimerkki siitä, mitä tässä vaiheessa tulisi kirjoittaa terminaaliin:
touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
201212211111 yllä olevassa esimerkissä edustaa “21. joulukuuta 2012 11:11 AM
Kommentit
- Mutta
touch
muokkaa muokattua päivämäärää, ei tiedoston luomispäivämäärää. - Se voi tehdä molemmat. Riippuu parametreista.
-
touch
-toiminnon käyttäminen yllä antamiesi parametrien kanssa muutti testitiedostoni muokkausta, mutta ei luomispäivämääriä. - @Daniel Todennäköisesti sait vastauksesi, mutta täydellisyyden vuoksi
touch
ei tehdä muokkaa luomispäivää argumenttien mukaan. Jos annat muokkauspäivämäärän, joka on ennen tiedoston ’ luomispäivää, luomispäivä muuttuu automaattisesti uudeksi muokkauspäivämääräksi, koska tiedostoa ei voi muokata ennen sen luomista . - Olen juuri kokeillut tätä Sierrassa ja koskettamalla ehdottomasti ei muuta
creation
-päivämäärää. Pystyin muuttamaanaccess
jamodified
päivämäärät ” päivämäärään menneisyydessä ”, mutta se ei muuttanut luomispäivää. Tarkista kosketussivu man-sivulta, siinä ei mainita luomispäivää. Tiedostojärjestelmä: Mac OS Extended (päivitetty, salattu).SetFile -d "$(GetFileInfo -m test.txt)" file.txt
-toiminnon käyttö toimi täydellisesti.
Vastaa
Tässä on vihjeitä , erityisesti viimeinen (Lauri Rantalta, vastasi 21. elokuuta kello 15:21). Perfekt!
Käytän nyt yksinkertaista Automator-työnkulkua useiden tiedostojen eräajoon muuttamiseen:
- Hanki valitut Finder-kohteet
- Suorita Shell-komentosarja, ”Pass input” : argumentteina ”
Shell-komentosarja on:
for f in "$@" do SetFile -d "$(GetFileInfo -m "$f")" "$f" done
Tämä toimii kuin viehätys.
Vastaus
Helpoin tapa, jonka löysin, oli luoda uusi kansio, kopioida kaikki harmaatun kansion alikansiot uuteen kansioon ja voila, uusi kansio ei ole harmaana. Voit tehdä tämän jopa etsinnässä.