Kunt u mij laten weten hoe ik de aanmaakdatum van een bestand in Lion kan wijzigen. Ik realiseer me dat er het touch-t-commando is, maar dat werkt niet in Lion. Een paar mensen hebben een andere manier genoemd, maar ik denk dat ze “de oplossing in” codeertaal “hebben geschreven in plaats van in lekentaal – zou iemand het kunnen beantwoorden op een manier die een leek kan uitvoeren?
Hartelijk dank voor uw hulp.
Reacties
- De ” coder ” uitleg waar andere mensen over hebben geschreven is waarschijnlijk een verwijzing naar ” touch “. Jij ‘ zou een Terminal moeten openen, navigeer naar de map waar het bestand zich bevindt en gebruik vervolgens het touch-commando om de aanmaakdatum van het bestand ‘ te wijzigen.
- FWIW Je bent op de goede regels met ” touch-t “, maar er is een spatie tussen de h en de -. Het ‘ s ” touch -t ”
Antwoord
touch -t
wijzigt normaal gesproken alleen de wijzigings- en toegangstijden. Het verandert alleen de aanmaaktijd als de doeltijd vóór de oorspronkelijke aanmaaktijd ligt.
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
verandert altijd de aanmaaktijd.
SetFile -d "12/31/1999 23:59:59" file.txt SetFile -d "$(GetFileInfo -m test.txt)" file.txt
SetFile maakt deel uit van het pakket met opdrachtregelprogrammas dat kan worden gedownload van ontwikkelaar .apple.com / downloads of vanuit de voorkeuren van Xcode.
Reacties
- -m voor het wijzigen van de wijzigingstijd.
- In Yosemite vereiste touch dat ik de indeling
+%Y%m%d%H%M.%S
gebruikte (let op de punt tussen minuten en seconden) - Ik schreef een functie met de naam
CpCreationDate
infish
:SetFile -d (GetFileInfo -m $argv[1]) $argv[2]
Answer
In Mac OS X lijken er vier verschillende tijdstempels aan een bestand te zijn gekoppeld. Deze tijdstempels worden niet altijd onafhankelijk van elkaar bijgewerkt, maar men kan er een hebben controle met een beetje zorg en met gebruik van touch
, SetFile
en chown
(of chmod
). Om dit te zien, laten we experimenteren en een nieuw bestand maken vanaf de opdrachtprompt #
:
# 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
De eerste vermelde datum is de laatste toegangstijd (atime
), de tweede is de laatste wijzigingstijd (mtime
), de derde is de laatste statuswijziging ( ctime
), de vierde is het tijdstip waarop het bestand is gemaakt (geboorte, Btime
), zie man lstat
.
Om de toegangstijd (atime
) aan te passen aan een opgegeven tijdsbesteding:
# 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
Om de wijzigingstijd (mtime
) en tijdstip van het aanmaken van het bestand (Btime
) te wijzigen in een opgegeven tijd 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
Blijkbaar werkt dit ook automatisch de tijd van de laatste statuswijziging (ctime
) bij naar de huidige systeemtijd!
Om alleen de tijd van creatie / geboorte (Btime
) te wijzigen in een bepaalde tijd, gebruik (als pr tegengesteld door anderen hierboven):
# 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
Om alleen de tijd van de laatste statuswijziging (ctime
) aan te passen aan de huidig systeemtijdgebruik bijvoorbeeld:
# 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
waarbij username
de eigenaar van het bestand is (zoals gerapporteerd door stat
of ls -l
). Dit verandert de eigendom van het bestand niet, maar heeft toegang tot de inode van het bestand en registreert dit als een tijd van de laatste statuswijziging. Helaas is het niet mogelijk om de tijd hier expliciet te specificeren, behalve door de tijd van de computer te veranderen …
Samenvattend, om de vier tijdstempels onafhankelijk te kunnen wijzigen, kan men (in deze volgorde voor de laatste 3):
-
touch -a -tCCYYMMDDHH.SS <file>
-
touch -m -tCCYYMMDDHH.SS <file>
-
SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
- [set system date]
chown username <file>
[terug naar normale systeemdatum]
(Natuurlijk kan het resetten van de systeemdatum geen risicovrije operatie zijn, je bent gewaarschuwd.)
Opmerkingen
- +1 Bedankt voor dit super gedetailleerde antwoord. Dit loste al mijn ellende op.
- Soms krijg ik fotos met onjuiste datums omdat mijn GoPro zichzelf reset. Ik breng deze fotos over naar mijn Mac en stel de datum vast volgens deze instructies, maar wanneer ik deze fotos overzet naar mijn iPhone, is de datum nog steeds verkeerd. De enige manier waarop ik ‘ heb gevonden om dit op te lossen is met een iOS EXIF-editor. Is er ergens nog een ander verborgen datumkenmerk?
- @Bowen: de datums waarnaar u verwijst in een foto, maken deel uit van de gegevens van het fotobestandsformaat zelf. De aanmaakdatum, wijzigingsdatum enz. Van bestanden waarnaar hierboven wordt verwezen, worden beheerd door het bestandssysteem van uw besturingssysteem, ze worden apart bijgehouden en bijgewerkt met de gegevens in het bestand.
Answer
De opdrachtregel touch
-opdracht werkt in Lion, maar je hebt wat achtergrondinformatie nodig over hoe je gebruik het.
Ten eerste moet je het typen, het is geen hulpprogramma dat grafisch in een venster werkt. De plaats waar je het typt is een app genaamd Terminal . U kunt dit vinden in uw map Hulpprogrammas, of gebruik Spotlight-zoekactie om het te vinden.
Zodra u het start, krijgt u een opdrachtregelvenster waarin u opdrachten kunt typen. Alleen omdat u typt, doet het niet ” Het betekent niet dat het iets met codering te maken heeft, maar voor iemand die nieuw is met “ouderwetse” OS-commandos, kan het er een beetje intimiderend uitzien.
Dus het commando heet touch , en na het commando kun je verschillende parameters doorgeven, de enige vereiste zijnde de bestandsnaam. Als u het volgende typt, wordt de laatste wijzigingsdatum van het bestand op de huidige tijd ingesteld:
touch filename
Natuurlijk moet u het bestand misschien eerst vinden, verdere opdrachten nodig om er te komen. het cd of Change Directory commando helpt hierbij:
cd ~/Desktop/files/PDFs touch filename
Of je kunt gewoon de volledige pad naar het bestand als onderdeel van de opdracht:
touch ~/Desktop/files/PDFs/filename
Door geavanceerder gebruik van de aanraakopdracht kun je de tijd opgeven die je wilt instellen, in plaats van de tijd bij uitvoering, toegang instellen in plaats van wijzigingstijden etc. Dit is wat parameters zoals -t en anderen doen. Sommigen stellen de tijd in als de tijd van een ander bestand, anderen stellen het in op teruggaan of vooruit in de tijd met een X-waarde ( zie hier voor meer details) , bijv .:
touch -d "1 May 2005 10:22" file8
Het volgende is van deze pagina die ook nuttige referentie en een goed voorbeeld met enkele tips voor degenen die zich niet prettig voelen bij bestandslocaties op de opdrachtregel.
Merk op dat dit zowel de datum gewijzigd als de datum aangemaakt attributen alleen zal veranderen als uw bestand is gemaakt na de datum die u invoert. Dit komt doordat een bestand niet kan worden gewijzigd voordat het is gemaakt. Indien aangemaakt vóór de datum die u heeft ingesteld, wordt alleen de wijzigingsdatum gewijzigd.
Hoe wijzig ik het kenmerk voor de datum waarop een bestand is aangemaakt?
Open de Terminal-applicatie (
/Applications/Utilities/Terminal.app
) of gebruik iTerm als je liever iTerm gebruikt.Typ dit in Terminal (zonder op enter / return te drukken) en de datum in het formaat
YYYYMMDDhhmm
:touch -t 201212211111
Open een Finder-venster en zoek het bestand dat u wilt wijzigen en sleep het naar het Terminal-venster. Het zal dan de bestandslocatie invoegen met behulp van de opdrachtregelterminologie. Hier is een voorbeeld van wat op dit punt in de Terminal moet worden getypt:
touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
201212211111 in het bovenstaande voorbeeld staat voor “21 december 2012 11:11 AM
Reacties
- Maar
touch
wijzigt de wijzigingsdatum, niet de aanmaakdatum van het bestand. - Het kan beide. Hangt af van de parameters.
- Door
touch
te gebruiken met de parameters die je hierboven hebt opgegeven, veranderde de wijziging maar niet de aanmaakdatums voor mijn testbestand. - @Daniel Je hebt waarschijnlijk je antwoord gekregen, maar voor de volledigheid wijzigt
touch
doe de aanmaakdatum afhankelijk van de argumenten. Als u een wijzigingsdatum opgeeft die vóór de aanmaakdatum van het bestand ‘ ligt, wordt de aanmaakdatum automatisch gewijzigd in de nieuwe wijzigingsdatum, aangezien een bestand niet kan worden gewijzigd voordat het is gemaakt . - Ik heb dit zojuist op Sierra geprobeerd en raak zeker verandert niet de
creation
datum aan. Ik konaccess
enmodified
datums wijzigen in een ” datum in het verleden “, maar het heeft de aanmaakdatum niet gewijzigd. Controleer de man-pagina voor aanraking, het vermeldt geen aanmaakdatum. Bestandssysteem: Mac OS Uitgebreid (journaled, versleuteld). Het gebruik vanSetFile -d "$(GetFileInfo -m test.txt)" file.txt
werkte perfect.
Antwoord
Geweldige tips hier , in het bijzonder de laatste (van Lauri Ranta, antwoordde 21 augustus om 15:21). Perfekt!
Ik gebruik nu een eenvoudige Automator Workflow om batchgewijs meerdere bestanden te wijzigen:
- Haal geselecteerde Finder-items op
- Run Shell Script, “Pass input : as arguments “
Het shellscript is:
for f in "$@" do SetFile -d "$(GetFileInfo -m "$f")" "$f" done
Dit werkt als een charme.
Antwoord
De gemakkelijkste manier die ik vond was om een nieuwe map te maken, kopieer alle submappen van de grijze map in de nieuwe map, en voila, de nieuwe map is niet grijs. U kunt dit zelfs in de zoeker doen.