ファイルの「作成日」および「最終変更日」属性を別のファイルに変更する


40

マージキャップを使用して、15個のファイルからマージpcapファイルを作成しています。マージされたファイルについては、15個のファイルのうちの最初のファイルの名前に変更しました。しかし、「作成日」や「最終変更日」などのマージされたファイルの属性を最初の属性に変更したいと思います。とにかくこれを行うにはありますか?

FILES_dcn=($(find  $dir_dcn -maxdepth 1 -type f -name "*.pcap"  -print0 | xargs -0 ls -lt | tail -15 | awk '{print $9}'))
TAG1_dcn=$(basename "${FILES_dcn[14]}" | sed 's/.pcap//')
mergecap -w  "${dir_dcn}"/merge_dcn.pcap "${FILES_dcn[@]}"
mv  "${dir_dcn}"/merge_dcn.pcap  "${dir_dcn}"/"${TAG1_dcn}".pcap

私は、sambaサーバー(Ubuntu)を介してマージされたファイルにアクセスしようとします。抽出機能がファイルに自動的にアクセスしてDフォルダーにアクセスできるようにします。ただし、マージされたファイルの作成日が変更されるため、抽出は失敗します。とにかくこれを修正する方法はありますか?

回答:


77

このtouchコマンドを-rスイッチと一緒に使用して、別のファイルの属性をファイルに適用できます。

注: Unixには作成日などはなく、アクセス、変更、および変更のみがあります。詳細については、このU&LのQ&Aタイトルの「特定のファイルの年齢を取得する」をご覧ください。

$ touch -r goldenfile newfile

例として、goldenfileこれは任意のタイムスタンプで作成されたものです。

$ touch -d 20120101 goldenfile
$ ls -l goldenfile 
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

次に、新しいファイルを作成します。

$ touch newfile
$ ls -l newfile 
-rw-rw-r--. 1 saml saml 0 Mar  7 09:06 newfile

goldenfileの属性をに適用しますnewfile

$ touch -r goldenfile newfile 
$ ls -l goldenfile newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

現在newfile、同じ属性があります。

Samba経由で変更する

Thecus N12000 NASに接続されたバージョン1.16.3-2を含むFedora 19ラップトップを使用してこれを実行できることを確認しました(CentOS 5.xの修正バージョンを使用)。

上記のようにファイルに触れることができ、説明したとおりに機能しました。問題は、使用されているマウントオプション(特定の時間属性の追跡を省略している可能性がある)、またはおそらく次のバグのいずれかに関連する問題です。


@JishnuUNair-Samba共有がどのようにマウントされているかを確認できますか(オプションはありますか)?通常は、mountコマンドからこれらを取得してから、アクセスしている共有を検索できます。推測ではありますが、マウントされている可能性が高いため、gvfsをFUSEファイルシステムとして使用しています。
slm

1
現在、多くのファイルシステムがファイル作成時間をサポートしています。ext4の場合、これを表示/変更できますdebugfs(ただし、これにはルート権限が必要であり、ここでは使用できません)。この質問を参照してください-unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4
Graeme

@Graeme-はい、私はちょうどstapを使用して同様の方法を参照しました:unix.stackexchange.com/questions/91197/…チャットルームで。
slm

1
Linuxは作成時間をサポートしていませんが、Samba共有はできます。設定方法(およびファイルシステムでのxattrサポート)に応じて、SambaにはLinux xattrsにタイムスタンプを保存する機能があります。つまり、有効な(変更可能な)作成時間を報告するなど、基になるファイルシステムではできないことを実行できる可能性があります。申し訳ありませんが、これがどのように機能するかについての良いリンクは見つかりませんでした。
ピーター

1
実際、ほとんどのLinuxファイルシステム(ext4など)は現在、作成日をサポートしており、Linux 4.11はstatx()それを取得するための呼び出しを行います。最後に。
ジェズ

36

最も簡単な方法-アクセスされた変更は同じです:

touch -a -m -t 201512180130.09 fileName.ext

どこで:

-a = accessed
-m = modified
-t  = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format

使用したい場合はNOW、単にドロップするtとタイムスタンプ

それらがすべて同じであることを確認するには: stat fileName.ext

参照:タッチマン


5
どういうわけか、ubuntu 14.04の-a前に-m置くと、アクセス時間が変更されません... touch -m -a -t....
後で入力し

5
-d time_stringより多分簡単に-t:「2004年2月29日午後04時21分42秒」-d
yurenchen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.