Czy mógłbyś mi powiedzieć, jak mogę zmienić datę utworzenia pliku w Lion. Zdaję sobie sprawę, że istnieje polecenie touch-t, ale to nie działa w Lion. Kilka osób wspomniało o innym sposobie, ale wydaje mi się, że „napisali rozwiązanie w języku„ kodera ”, a nie w języku laika – czy ktoś byłby w stanie odpowiedzieć na nie w sposób, który może wykonać laik?

Wielkie dzięki za pomoc.

Komentarze

  • Koder ” ” wyjaśnienie, o którym pisali inni ludzie, jest prawdopodobnie odniesieniem do ” dotyku „. Ty ' d musisz otworzyć terminal, przejść do folderu, w którym znajduje się plik, a następnie użyć polecenia dotykowego, aby zmodyfikować datę utworzenia fie '.
  • FWIW Jesteś na właściwych liniach z ” touch-t „, ale między h a – jest spacja. To ' s ” touch -t ”

Odpowiedź

touch -t zwykle zmienia tylko czasy modyfikacji i dostępu. Zmienia czas utworzenia tylko wtedy, gdy czas docelowy jest wcześniejszy niż pierwotny.

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 zawsze się zmienia czas utworzenia.

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

SetFile jest częścią pakietu narzędzi wiersza poleceń, który można pobrać od programisty .apple.com / pliki do pobrania lub z preferencji Xcode.

Komentarze

  • -m do zmiany czasu modyfikacji.
  • W Yosemite dotknięcie wymagało użycia formatu +%Y%m%d%H%M.%S (zwróć uwagę na kropkę między minutami i sekundami)
  • Napisałem funkcję o nazwie CpCreationDate w fish : SetFile -d (GetFileInfo -m $argv[1]) $argv[2]

Odpowiedź

W systemie Mac OS X wydaje się, że z plikiem są powiązane cztery różne sygnatury czasowe. Te sygnatury czasowe nie zawsze są aktualizowane niezależnie od siebie, ale można mieć indywidualne Ogólna kontrola z odrobiną ostrożności i przy użyciu touch, SetFile i chown (lub chmod). Aby to zobaczyć, poeksperymentujmy i utwórz nowy plik z wiersza poleceń #:

# 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 

pierwsza wymieniona data to czas ostatniego dostępu (atime), druga to czas ostatniej modyfikacji (mtime), trzecia to ostatnia zmiana statusu ( ctime), czwarty to czas utworzenia pliku (narodziny, Btime), patrz man lstat.

Aby zmodyfikować czas dostępu (atime) do określonego czasu, użyj:

# 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 

Aby zmienić czas modyfikacji (mtime) i czas utworzenia pliku (Btime) do określonego czasu użyj:

# 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 

Najwyraźniej to również automatycznie aktualizuje czas ostatniej zmiany statusu (ctime) do aktualny czas systemowy!

Aby zmodyfikować tylko czas powstania / urodzenia (Btime) do podanego czasu, użyj (jako pr przez innych powyżej):

# 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 

Aby zmodyfikować tylko czas ostatniej zmiany statusu (ctime) do aktualny czas systemowy, na przykład:

# 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 

gdzie username jest właścicielem pliku (zgodnie z informacją stat lub ls -l). To nie zmienia własności pliku, ale uzyskuje dostęp do i-węzła pliku i rejestruje to jako czas ostatniej zmiany statusu. Niestety, nie jest możliwe tutaj jawne określenie czasu inaczej niż przez zmianę czasu komputera …

Podsumowując, aby móc niezależnie zmienić cztery znaczniki czasu, można użyć (w tym kolejność ostatnich 3):

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [ustaw datę systemową] chown username <file> [przywróć normalną datę systemową]

(Oczywiście zresetowanie daty systemowej może nie być operacją pozbawioną ryzyka, ostrzegano Cię).

Komentarze

  • +1 Dziękujemy za bardzo szczegółową odpowiedź. To rozwiązało wszystkie moje problemy.
  • Czasami zdjęcia mają nieprawidłowe daty, ponieważ moje GoPro resetuje się. Przesyłam te zdjęcia na mojego Maca i ustalam datę zgodnie z tymi instrukcjami, ale kiedy przesyłam te zdjęcia na mojego iPhonea, data nadal jest nieprawidłowa. Jedynym sposobem, w jaki ' udało się to naprawić, jest użycie edytora EXIF iOS. Czy jest gdzieś inny ukryty atrybut daty?
  • @Bowen: Daty, do których odwołujesz się na zdjęciu, są częścią danych samego formatu pliku zdjęcia. Data utworzenia, data modyfikacji itp. Plików, o których mowa powyżej, to te zarządzane przez system plików twojego systemu operacyjnego, są one utrzymywane i aktualizowane oddzielnie do danych zawartych w pliku.

Odpowiedź

Polecenie wiersza poleceń touch działa w Lion, ale potrzebujesz trochę informacji o tym, jak użyj go.

Po pierwsze, musisz go wpisać, to nie jest narzędzie, które działa graficznie w oknie. Miejsce, w którym wpisujesz, to aplikacja o nazwie Terminal . Możesz to znaleźć w folderze Narzędzia lub użyć wyszukiwania Spotlight, aby go znaleźć.

Po uruchomieniu pojawi się okno wiersza poleceń, w którym możesz wpisywać polecenia. Tylko dlatego, że piszesz, nie ” To znaczy, że ma to coś wspólnego z kodowaniem, ale dla kogoś, kto nie zna „staromodnych” poleceń systemu operacyjnego, może wyglądać trochę onieśmielająco.

Polecenie nazywa się więc dotyk , a po komendzie można podać różne parametry, jedyne wymagane będąc nazwą pliku. Wpisanie następującego ustawienia ustawi datę ostatniej modyfikacji pliku na aktualny czas:

touch filename 

Oczywiście może być konieczne najpierw znalezienie pliku, co może wymagają dalszych poleceń, aby się do niego dostać. pomocna jest tutaj komenda cd lub Change Directory :

cd ~/Desktop/files/PDFs touch filename 

Lub możesz po prostu dodać pełną ścieżka do pliku jako część polecenia:

touch ~/Desktop/files/PDFs/filename 

Bardziej zaawansowane użycie polecenia dotykowego pozwala określić czas, który chcesz ustawić, zamiast używania czas wykonania, ustaw dostęp zamiast czasów modyfikacji itp. To właśnie robią parametry takie jak -t i inne. Niektórzy ustawiają czas jako czas dla innego pliku, inni ustawiają go na cofnięcie lub do przodu w czasie o wartość X ( patrz tutaj , aby uzyskać więcej informacji) , np .:

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

Poniżej znajduje się z tej strony , która również jest przydatne odniesienie i świetny przykład z kilkoma wskazówkami dla tych, którzy nie czują się komfortowo z lokalizacją plików w wierszu poleceń

Zauważ, że zmieni to zarówno atrybuty daty modyfikacji, jak i daty utworzenia tylko wtedy, gdy plik został utworzony po data wprowadzenia. Dzieje się tak, ponieważ pliku nie można zmodyfikować przed jego utworzeniem. Jeśli utworzono przed ustawioną datą, zmieniona zostanie tylko data modyfikacji.

Jak zmienić atrybut daty utworzenia pliku?

  1. Otwórz aplikację Terminal (/Applications/Utilities/Terminal.app) lub jeśli wolisz korzystać z iTerm.

  2. Wpisz to do terminala (bez naciskania enter / return) wstawiając datę w formacie YYYYMMDDhhmm:

    touch -t 201212211111 
  3. Otwórz okno Findera i znajdź plik, który chcesz zmodyfikować, a następnie przeciągnij i upuść go w oknie terminala, a następnie wstawi lokalizację pliku przy użyciu terminologii wiersza poleceń. Oto przykład tego, co w tym momencie należy wpisać w terminalu:

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

    201212211111 w powyższym przykładzie oznacza „21 grudnia 2012 11:11

Komentarze

  • Ale touch modyfikuje datę modyfikacji, a nie datę utworzenia pliku.
  • Może zrobić jedno i drugie. Zależy od parametrów.
  • Użycie touch z parametrami, które podałeś powyżej, zmieniło datę modyfikacji, ale nie daty utworzenia mojego pliku testowego.
  • @Daniel Prawdopodobnie otrzymałeś odpowiedź, ale ze względu na kompletność touch nie zmodyfikuj datę utworzenia w zależności od argumentów. Jeśli podasz datę modyfikacji, która jest wcześniejsza niż data utworzenia pliku ', data utworzenia automatycznie zmieni się na nową wartość daty modyfikacji, ponieważ pliku nie można zmodyfikować przed jego utworzeniem .
  • Właśnie wypróbowałem to na Sierra i touch zdecydowanie nie zmienia daty creation. Udało mi się zmienić daty access i modified na ” datę z przeszłości „, ale nie zmienił daty utworzenia. Sprawdź stronę podręcznika pod kątem dotyku, nie wspomina o dacie utworzenia. System plików: Mac OS Extended (kronikowany, szyfrowany). Używanie SetFile -d "$(GetFileInfo -m test.txt)" file.txt działało idealnie.

Odpowiedź

Wspaniałe wskazówki , w szczególności ostatni (od Lauri Ranta, odpowiedział 21 sierpnia o 15:21). Perfekt!

Teraz używam prostego przepływu pracy Automatora do wsadowej zmiany wielu plików:

  1. Pobierz wybrane elementy wyszukiwarki
  2. Uruchom skrypt powłoki, „Przepisz dane wejściowe : jako argumenty „

Skrypt powłoki to:

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

To działa jak urok.

Odpowiedź

Najłatwiejszym sposobem, jaki znalazłem, było utworzenie nowego folderu, skopiowanie wszystkich podfolderów wyszarzonego folderu do nowego folderu i voila, nowy folder nie jest wyszarzony. Możesz to nawet zrobić w wyszukiwarce.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *