ファイルの作成日を変更する


62

Lionでファイルの作成日を変更する方法を教えてください。touch-tコマンドがありますが、Lionでは機能しません。何人かの人々は別の方法で言及しましたが、私は彼らが素人の言語ではなく「コーダー」言語でソリューションを書いたと思います-素人が実行できる方法で誰かがそれに答えることができるでしょうか?

助けてくれて本当にありがとうございます。


他の人が書いた「コーダー」の説明は、おそらく「タッチ」への参照です。ターミナルを開いて、ファイルが存在するフォルダーに移動し、touchコマンドを使用してファイルの作成日を変更する必要があります。
デレクナイト

2
FWIW「touch-t」で正しい行にいますが、hと-の間にスペースがあります。「タッチ-t」
デレクナイト

回答:


95

touch -t通常、変更とアクセス時間のみを変更します。ターゲット時間が元の作成時間より前の場合にのみ、作成時間を変更します。

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 常に作成時間を変更します。

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

SetFileはコマンドラインツールパッケージの一部であり、developer.apple.com / downloads またはXcodeの設定からダウンロードできます。


4
-m変更時刻を変更します。
AlikElzin-kilaka 14

5
ヨセミテでは、タッチで形式を使用する必要がありました+%Y%m%d%H%M.%S(分と秒の間のドットに注意してください)
-Calimo

次の関数を作成しCpCreationDateましたfishSetFile -d (GetFileInfo -m $argv[1]) $argv[2]
Pascal

15

Mac OS Xでは、ファイルに関連付けられた4つの異なるタイムスタンプがあるようです。これらのタイムスタンプは、常に互いに独立して更新されるわけではありませんが、少し注意して、、、および(または)を使用するとtouch、個別に制御できます。これを確認するには、コマンドプロンプトから新しいファイルを試して作成してみましょう。SetFilechownchmod#

# 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

リストされた最初の日付は最終アクセス時刻(atime)、2番目は最終変更時刻(mtime)、3番目は最終ステータス変更(ctime)、4番目はファイル作成時刻(生年月日、Btime)を参照してくださいman lstat

アクセス時間(atime)を指定した時間に変更するには、次を使用します。

# 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

変更時刻(mtimeおよびファイル作成時刻(Btime)を指定した時刻に変更するには、次を使用します。

# 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

どうやらこれはまた、最後のステータス変更の時刻(ctime)を現在のシステム時刻に自動的に更新します!

作成/誕生の時間(Btime)のみを特定の時間に変更するには、以下を使用します(上記の他の提案)。

# 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

最後のステータス変更の時刻(ctime)のみを現在のシステム時刻に変更するには、たとえば次を使用します。

# 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

ここで、username(によって報告されたファイルの所有者ですstatか、ls -l)。これはファイルの所有権を変更しませんが、ファイルのiノードにアクセスし、これを最後のステータス変更の時刻として記録します。残念ながら、コンピューターの時間を変更する以外に、ここで時間を明示的に指定することはできません...

要約すると、4つのタイムスタンプを個別に変更できるようにするには、次のように使用できます(最後の3つの順序で):

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [システムの日付を設定] chown username <file>[通常のシステムの日付に戻す]

(もちろん、システムの日付をリセットすることはリスクのない操作ではないかもしれないと警告されています。)


+1この非常に詳細な回答をありがとうございます。これは私のすべての悩みを解決しました。
ゴビンドライ

13

コマンドラインtouchコマンドはLionで動作しますが、使用方法について少し知識が必要です。

まず、入力する必要があります。ウィンドウ内でグラフィカルに動作するユーティリティではありません。入力する場所は、ターミナルと呼ばれるアプリです。これは、ユーティリティフォルダーで見つけるか、Spotlight検索を使用して見つけることができます。

起動すると、コマンドを入力できるコマンドラインウィンドウが表示されます。入力しているからといって、それがコーディングに関係しているという意味ではありませんが、「昔ながらの」OSコマンドを初めて使用する人にとっては、少し威圧的に見えるかもしれません。

そのため、このコマンドはtouchと呼ばれ、コマンドの後にさまざまなパラメーターを渡すことができます。唯一の必須パラメーターはファイル名です。次を入力すると、ファイルの最終変更日が現在の時刻に設定されます。

touch filename

もちろん、最初にファイルを見つける必要がある場合がありますが、そのためにはさらにコマンドが必要になる場合があります。CDディレクトリの変更コマンドはここに役立ちます:

cd ~/Desktop/files/PDFs
touch filename

または、コマンドの一部としてファイルへのフルパスを追加するだけです。

touch ~/Desktop/files/PDFs/filename

touchコマンドのより高度な使用法では、実行時を使用するのではなく、設定する時間を指定したり、変更時間ではなくアクセスを設定したりできます。これが-tなどのパラメーターの機能です。時間を別のファイルの時間に設定したり、X量だけ時間をさかのぼったり、時間を早めたりするように設定する人もいます(詳細についてはこちらをご覧ください)。

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

以下はこのページからの参考資料であり、コマンドラインでのファイルの場所が気に入らない人向けのヒントを含む素晴らしい例です。

入力した日付より後にファイルが作成された場合にのみ、これにより変更日属性と作成日属性の両方が変更されることに注意してください。これは、ファイルが作成される前に変更できないためです。設定した日付より前に作成された場合、変更された日付のみが変更されます。

ファイルの作成日属性を変更する方法は?

  1. ターミナルアプリケーション(/Applications/Utilities/Terminal.app)を開くか、iTermを使用する場合。

  2. これをターミナルに入力し(Enter / Returnを押すことなく)、次の形式で日付を挿入しますYYYYMMDDhhmm

    touch -t 201212211111
    
  3. Finderウィンドウを開き、変更するファイルを見つけて、ターミナルウィンドウにドラッグアンドドロップすると、コマンドラインの用語を使用してファイルの場所が挿入されます。この時点でターミナルに入力する必要があるものの例を次に示します。

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

    上記の例の201212211111は、「2012年12月21日午前11時11分」を表します。


2
ただしtouch、ファイルの作成日ではなく、変更日を変更します。
ダニエル

1
両方できます。パラメーターに依存します。
詰める

2
touch上記で指定したパラメーターを使用して変更を変更しましたが、テストファイルの作成日は変更しませんでした。
ダニエル

2
@Danielあなたはprobabllyあなたの答えを得たが、完全がたのためにtouch た引数に応じて、作成日を変更します。ファイルの作成日より前の修正日を指定すると、ファイルは作成前に修正できないため、作成日は自動的に新しい修正日値に変更されます。
ゴビンドライ

2
Sierraでこれを試したところ、タッチしてもcreation日付変更されません。「過去の日付」に変更accessしてmodified日付を変更できましたが、作成日は変更されませんでした。マニュアルページでタッチを確認してください。作成日については触れていません。ファイルシステム:Mac OS拡張(ジャーナリング、暗号化)。使用SetFile -d "$(GetFileInfo -m test.txt)" file.txtは完全に機能しました。
ジョナサンクロス

7

ここでの偉大なヒント、特に最後のヒント(Lauri Rantaから、8月21日15:21に回答)。パーフェクト!

単純なAutomatorワークフローを使用して、複数のファイルを一括変更します。

  1. 選択したファインダーアイテムを取得
  2. シェルスクリプト「パス入力:引数として」を実行します

シェルスクリプトは次のとおりです。

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

これは魅力のように機能します。


0

私が見つけた最も簡単な方法は、新しいフォルダーを作成し、グレー表示されたフォルダーのすべてのサブフォルダーを新しいフォルダーにコピーし、新しいフォルダーがグレー表示されないことです。ファインダーでこれを行うこともできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.