การเปลี่ยนแอตทริบิวต์“ สร้างวันที่” และ“ แก้ไขล่าสุด” ของไฟล์เป็นไฟล์อื่น


40

ฉันใช้การผสานเพื่อสร้างไฟล์ pcap จาก 15 ไฟล์ สำหรับไฟล์ที่ผสานฉันได้เปลี่ยนชื่อเป็นไฟล์แรกจาก 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

ฉันพยายามเข้าถึงไฟล์ที่ผสานผ่านเซิร์ฟเวอร์แซมบ้า (Ubuntu) เพื่อให้ฟังก์ชันตัวแยกข้อมูลสามารถเข้าถึงการแยกไฟล์ไปยังโฟลเดอร์ D โดยอัตโนมัติ แต่เนื่องจากวันที่สร้างจะมีการเปลี่ยนแปลงสำหรับไฟล์ที่ผสานการแยกไฟล์ล้มเหลว มีวิธีแก้ไขไหม

คำตอบ:


77

คุณสามารถใช้touchคำสั่งพร้อมกับ-rสวิตช์เพื่อใช้คุณสมบัติของไฟล์อื่นกับไฟล์

หมายเหตุ:ไม่มีสิ่งเช่นวันที่สร้างใน Unix มีเพียงการเข้าถึงแก้ไขและเปลี่ยนแปลงเท่านั้น ดูคำถาม & คำตอบ U & L นี้: รับอายุไฟล์ที่กำหนดสำหรับรายละเอียดเพิ่มเติม

$ 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

ตอนนี้ใช้เป็นแอตทริบิวต์goldenfilenewfile

$ 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

ฉันเพิ่งยืนยันว่าฉันสามารถทำสิ่งนี้ได้โดยใช้แล็ปท็อป Fedora 19 ซึ่งรวมถึงรุ่น 1.16.3-2 ที่เชื่อมต่อกับ Thecus N12000 NAS (ใช้ CentOS 5.x รุ่นดัดแปลง)

ฉันสามารถสัมผัสไฟล์ได้ตามที่กล่าวไว้ข้างต้นและทำงานได้ตามที่ฉันอธิบาย ปัญหาของคุณน่าจะมีปัญหากับตัวเลือกการติดตั้งที่ใช้ซึ่งอาจจะไม่ใช้การติดตามของคุณสมบัติเวลาที่กำหนดหรืออาจเกี่ยวข้องกับข้อบกพร่องอย่างใดอย่างหนึ่งต่อไปนี้:


@JishnuUNair - คุณสามารถตรวจสอบเพื่อดูว่าการแชร์ Samba กำลังถูกเมาท์ได้อย่างไร (มีตัวเลือกอะไร) โดยทั่วไปคุณสามารถรับสิ่งเหล่านี้จากmountคำสั่งแล้วมองหาส่วนแบ่งที่คุณกำลังเข้าถึง แค่เดา ​​แต่ก็น่าจะถูกเมานต์ใช้ gvfs เป็นระบบไฟล์ FUSE
slm

1
ระบบไฟล์จำนวนมากในขณะนี้สนับสนุนเวลาในการสร้างไฟล์ สำหรับ ext4 คุณสามารถดู / เปลี่ยนแปลงได้debugfs(แม้ว่าจะต้องใช้สิทธิ์รูทและไม่มีการใช้งานที่นี่) ดูคำถามนี้ - unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4
Graeme

@ Graeme - ใช่ฉันเพิ่งจะอ้างถึงวิธีการที่คล้ายกันโดยใช้การเย็บเล่ม : unix.stackexchange.com/questions/91197/…ในห้องสนทนา
slm

1
ในขณะที่ Linux ไม่รองรับเวลาในการสร้าง Samba สามารถแชร์ได้ Samba มีความสามารถในการจัดเก็บการประทับเวลาใน Linux xattrs ทั้งนี้ขึ้นอยู่กับวิธีที่คุณตั้งค่า (และการสนับสนุน xattr ในระบบไฟล์) ซึ่งหมายความว่ามันอาจจะสามารถทำสิ่งต่าง ๆ ที่ระบบไฟล์พื้นฐานไม่สามารถ - เช่นรายงานเวลาสร้างที่ถูกต้อง (แก้ไขได้) ขออภัยฉันไม่พบลิงค์ที่ดีในการทำงาน
ปีเตอร์

1
ที่จริงแล้วระบบไฟล์ Linux ส่วนใหญ่ (เช่น ext4) รองรับการสร้างวันที่และ Linux 4.11 จะมีการstatx()เรียกเพื่อเรียกคืน ในที่สุด
Jez

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
อย่างใดในอูบุนตู 14.04 วาง-aก่อน-mไม่ปรับเปลี่ยนเวลาในการเข้าถึง ... ใส่มันดังนั้น:touch -m -a -t....
Jadeye

5
-d time_stringอาจจะง่ายกว่า-t: -d "2004-02-29 16:21:42"
yurenchen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.