Thay đổi các thuộc tính Ngày của một tập tin đã tạo ra các thuộc tính của Bỉ


40

Tôi đang sử dụng nắp hợp nhất để tạo tệp pcap hợp nhất từ ​​15 tệp. Đối với tệp được hợp nhất, tôi đã thay đổi tên thành tên đầu tiên trong số 15 tệp. Nhưng tôi cũng muốn thay đổi các thuộc tính của tệp được hợp nhất như "Ngày tạo" và "Sửa đổi lần cuối" thành thuộc tính của tệp đầu tiên. Có cách nào để làm điều này?

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

Tôi cố gắng truy cập các tệp được hợp nhất qua máy chủ samba (Ubuntu). Vì vậy, một chức năng trích xuất có thể truy cập tự động giải nén các tập tin vào thư mục D. Nhưng vì ngày tạo sẽ được thay đổi cho tệp được hợp nhất, trích xuất không thành công. Có cách nào để khắc phục điều này?

Câu trả lời:


77

Bạn có thể sử dụng touchlệnh cùng với công -rtắc để áp dụng các thuộc tính của tệp khác cho tệp.

LƯU Ý: Không có thứ gọi là ngày tạo trong Unix, chỉ có quyền truy cập, sửa đổi và thay đổi. Xem Câu hỏi và trả lời của U & L này có tiêu đề: lấy tuổi của tệp đã cho để biết thêm chi tiết.

$ touch -r goldenfile newfile

Thí dụ

Ví dụ mục đích ở đây là một mục goldenfileđược tạo với một số dấu thời gian tùy ý.

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

Bây giờ tôi tạo một số tệp mới:

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

Bây giờ áp dụng goldenfilecác thuộc tính của 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

Bây giờ newfilecó các thuộc tính tương tự.

Sửa đổi qua Samba

Tôi vừa xác nhận rằng tôi có thể thực hiện việc này bằng máy tính xách tay Fedora 19 của mình, bao gồm phiên bản 1.16.3-2 được kết nối với NAS Thecus N12000 (sử dụng phiên bản sửa đổi của CentOS 5.x).

Tôi đã có thể chạm vào một tập tin như tôi đã đề cập ở trên và nó hoạt động như tôi mô tả. Vấn đề của bạn có thể là sự cố với các tùy chọn gắn kết đang được sử dụng, có thể bỏ qua việc theo dõi các thuộc tính thời gian nhất định hoặc có thể liên quan đến một trong những lỗi sau:


@JishnuUNair - bạn có thể kiểm tra xem chia sẻ Samba đang được gắn kết như thế nào (với tùy chọn nào) không? Thông thường bạn có thể lấy những thứ này từ mountlệnh và sau đó tìm phần chia sẻ mà bạn đang truy cập. Chỉ là một phỏng đoán nhưng có khả năng nó được gắn kết sử dụng gvfs như một hệ thống tập tin FUSE.
slm

1
Rất nhiều hệ thống tập tin hiện hỗ trợ thời gian tạo tập tin. Đối với ext4, bạn có thể xem / thay đổi thông qua debugfs(mặc dù điều này cần quyền root và không được sử dụng ở đây). Xem câu hỏi này - unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4
Graeme

@Graeme - có Tôi vừa tham khảo một phương pháp tương tự bằng cách sử dụng chủ yếu: unix.stackexchange.com/questions/91197/ trộm trong phòng chat.
slm

1
Trong khi Linux không hỗ trợ thời gian tạo, một chia sẻ Samba có thể. Tùy thuộc vào cách bạn thiết lập nó (và hỗ trợ xattr trong hệ thống tệp), Samba có khả năng lưu trữ một số tem thời gian trong Linux xattrs. Điều đó có nghĩa là nó có thể thực hiện những điều mà hệ thống tệp cơ bản không thể - như báo cáo thời gian tạo hợp lệ (có thể sửa đổi). Xin lỗi, tôi đã không tìm thấy bất kỳ liên kết tốt để làm thế nào điều này hoạt động.
Peter

1
Trên thực tế, hầu hết các hệ thống tệp Linux (ví dụ: ext4) hiện hỗ trợ ngày tạo và Linux 4.11 sẽ có statx()lệnh gọi để truy xuất nó. Cuối cùng.
Jez

36

Cách dễ nhất - truy cập sửa đổi sẽ giống nhau:

touch -a -m -t 201512180130.09 fileName.ext

Ở đâu:

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

Nếu bạn muốn sử dụng NOWchỉ cần thả tvà dấu thời gian

Để xác minh tất cả đều giống nhau: stat fileName.ext

Xem: chạm vào người đàn ông


5
Bằng cách nào đó, trên Ubuntu 14.04 đặt -atrước -mkhông sửa đổi thời gian truy cập ... hãy đặt nó sau, vì vậy:touch -m -a -t....
Jadeye

5
-d time_stringcó thể dễ dàng hơn -t: -d "2004 / 02-29 16:21:42"
yurenchen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.