Kan du snälla meddela mig hur jag kan ändra skapandet av en fil i Lion. Jag inser att det finns touch-t-kommandot men det fungerar inte i Lion. Ett par personer har nämnt ett annat sätt, men jag tror att de ”har skrivit lösningen på” kodarspråk ”snarare än lekmannspråk – skulle någon kunna svara på det på ett sätt som en lekman kan utföra?

Stort tack för din hjälp.

Kommentarer

  • ” kodaren ” förklaring som andra har skrivit om är förmodligen en hänvisning till ” peka på ”. Du ’ d måste öppna en terminal, navigera till mappen där filen är och använd sedan kommandot touch för att ändra fie ’ skapelsedatum.
  • FWIW Du är på rätt rader med ” touch-t ”, men det finns ett mellanrum mellan h och -. Det ’ s ” touch -t ”

Svar

touch -t ändrar normalt bara modifierings- och åtkomsttiderna. Det ändrar bara skapandetiden om måltiden är före den ursprungliga skapelsetiden.

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 ändras alltid skapandetiden.

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

SetFile är en del av kommandoradsverktygspaketet som kan laddas ner från utvecklare .apple.com / nedladdningar eller från Xcodes inställningar.

Kommentarer

  • -m för att ändra ändringstid.
  • I Yosemite krävde touch att jag använde formatet +%Y%m%d%H%M.%S (märk punkten mellan minuter och sekunder)
  • Jag skrev en funktion som heter CpCreationDate i fish : SetFile -d (GetFileInfo -m $argv[1]) $argv[2]

Svar

I Mac OS X verkar det finnas fyra olika tidsstämplar associerade med en fil. uppdateras inte alltid oberoende av varandra, men man kan ha någon individ övervakning med lite försiktighet och med användning av touch, SetFile och chown (eller chmod). För att se detta, låt oss experimentera och skapa en ny fil från kommandotolken #:

# 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 

det första datumet som anges är den senaste åtkomsttiden (atime), den andra är den senaste ändringstiden (mtime), den tredje är den senaste statusändringen ( ctime), den fjärde är tiden för filskapande (födelse, Btime), se man lstat.

För att ändra åtkomsttid (atime) till en angiven tidsanvändning:

# 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 

För att ändra modifieringstid (mtime) och tid för filskapande (Btime) till en viss tid användning:

# 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 

Tydligen uppdaterar detta också automatiskt tiden för senaste statusändring (ctime) till nuvarande systemtid!

För att bara ändra tidpunkten för skapande / födelse (Btime) till en viss tid, använd (som pr ställd av andra ovan):

# 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 

För att bara ändra tiden för senaste statusändring (ctime) till aktuell systemtidsanvändning till exempel:

# 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 

där username är filens ägare (som rapporterats av stat eller ls -l). Detta ändrar inte äganderätten till filen, men får åtkomst till filens inod och registrerar detta som en tidpunkt för senaste statusändring. Tyvärr är det inte möjligt att ange tiden uttryckligen här annat än genom att ändra datorns tid …

Sammanfattningsvis, för att kunna ändra de fyra tidsstämplarna oberoende, kan man använda (i detta order för de sista 3):

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [ställa in systemdatum] chown username <file> [återgå till normalt systemdatum]

(Återställning av systemdatumet kan naturligtvis inte vara en riskfri åtgärd, du har blivit varnad.)

Kommentarer

  • +1 Tack för det här super detaljerade svaret. Detta löste alla mina elände.
  • Ibland får jag foton som har fel datum eftersom min GoPro återställer sig själv. Jag överför dessa foton till min Mac och fixar datumet enligt dessa instruktioner, men när jag överför dessa foton till min iPhone är datumet fortfarande fel. Det enda sättet jag ’ har hittat att fixa är med en iOS EXIF-redigerare. Finns det ännu ett dolt attribut någonstans?
  • @Bowen: De datum du hänvisar till på ett foto är en del av data i själva fotofilformatet. Skapningsdatum, modifieringsdatum etc. för de filer som nämns ovan är de som hanteras av ditt operativsystems filsystem, de underhålls och uppdateras separat till data som finns i filen.

Svar

Kommandoraden touch -kommandot fungerar i Lion, men du behöver lite bakgrund om hur du använd det.

För det första måste du skriva in det, det är inte ett verktyg som fungerar grafiskt i ett fönster. Platsen du skriver in är en app som heter Terminal . Du hittar det i mappen Verktyg eller använder Spotlight-sökning för att hitta det.

När du har startat det får du ett kommandoradsfönster där du kan skriva in kommandon. Bara för att du skriver inte ” Det betyder att det har något att göra med kodning, men för någon ny till ”gammaldags” OS-kommandon kan det se lite skrämmande ut.

Så, kommandot heter touch , och efter kommandot kan du skicka olika parametrar, den enda som krävs är filnamnet. Att skriva följande ställer in det senaste modifierade datumet för filen till aktuell tid:

touch filename 

Naturligtvis kan du behöva hitta filen först, vilket kan kräver ytterligare kommandon för att komma till det. kommandot cd eller Ändra katalog hjälper här:

cd ~/Desktop/files/PDFs touch filename 

Eller så kan du helt enkelt lägga till hela sökväg till filen som en del av kommandot:

touch ~/Desktop/files/PDFs/filename 

Mer avancerad användning av touch-kommandot gör att du kan ange tiden du vill ställa in snarare än att använda tiden vid körning, ställ in åtkomst istället för modifieringstider etc. Detta är vad parametrar som -t och andra gör. Vissa ställer in tiden för att vara tiden för en annan fil, andra ställer in den för att gå tillbaka eller framåt i tid med X-belopp, ( se här för mer information) , t.ex.:

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

Följande är från denna sida som också är användbar referens, och ett bra exempel med några tips för dem som är obekväma med filplatser på kommandoraden

Observera att detta ändrar attributet för ändring av datum och datum bara om din fil skapades efter datum du anger. Det beror på att en fil inte kan ändras innan den har skapats. Om det skapas före det datum du ställer in ändras endast det ändrade datumet.

Hur ändrar jag det attribut som skapats för en fil?

  1. Öppna terminalapplikationen (/Applications/Utilities/Terminal.app) eller använd iTerm om du föredrar.

  2. Typ detta i Terminal (utan att trycka på enter / return) och infoga datumet i formatet YYYYMMDDhhmm:

    touch -t 201212211111 
  3. Öppna ett Finder-fönster och leta reda på filen du vill ändra och dra och släpp den i terminalfönstret, den infogar sedan filplatsen med kommandoradsterminologi. Här är ett exempel på vad som ska skrivas in i terminalen vid denna tidpunkt:

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

    201212211111 i exemplet ovan representerar “21 december 2012 11:11

Kommentarer

  • Men touch ändrar det ändrade datumet, inte skapelsedatumet för filen.
  • Det kan göra båda. Beror på parametrarna.
  • Användning av touch med parametrarna du gav ovan ändrade ändringsdatum men inte skapande datum för min testfil.
  • @Daniel Du har antagligen fått ditt svar, men för fullständighetens skull ändrar touch skapandedatumet beroende på argumenten. Om du anger ett modifieringsdatum som ligger före filen ’ skapas datum, skapas datumet automatiskt till det nya modifieringsdatumvärdet, eftersom en fil inte kan ändras innan den skapas .
  • Jag har just provat det här på Sierra och pekar definitivt ändrar inte creation datum. Jag kunde ändra access och modified datum till ett ” datum tidigare ”, men det ändrade inte skapelsedatumet. Kontrollera mansidan för beröring, det nämns inte skapelsedatum. Filsystem: Mac OS Extended (Journaled, Encrypted). Att använda SetFile -d "$(GetFileInfo -m test.txt)" file.txt fungerade perfekt.

Svar

Stortips här , särskilt den sista (från Lauri Ranta, svarade 21 augusti kl. 15:21). Perfekt!

Jag använder nu ett enkelt Automator-arbetsflöde för att byta flera filer i batch:

  1. Hämta utvalda Finder-objekt
  2. Kör Shell-skript, ”Pass input : som argument ”

Skalskriptet är:

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

Detta fungerar som en charm.

Svar

Det enklaste sättet jag hittade var att skapa en ny mapp, kopiera alla undermappar i den nedtonade mappen i den nya mappen, och voila, den nya mappen är inte nedtonad. Du kan till och med göra detta i sökaren.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *