stat: การแก้ไขเวลาประทับของไฟล์


11

ฉันใช้stat -f %m .bashrcเพื่อรับเวลาการแก้ไขของ. bashrc บน osx แต่เมื่อฉันเรียกใช้คำสั่งเดียวกันบน Ubuntu มัน spits ข้อผิดพลาด:

stat: cannot read file system information for %m': No such file or directory

มีวิธีที่เข้ากันได้เพื่อให้บรรลุนี้

คำตอบ:


12

Ubuntu ใช้ coreutils ของ GNU statในขณะที่ OSX ใช้ตัวแปร BSD ดังนั้นใน Ubuntu คำสั่งต่างออกไปเล็กน้อย:

stat -c %Y .bashrc

จากman stat:

   -c  --format=FORMAT
          use the specified FORMAT instead of the default; output  a  new
          line after each use of FORMAT

และ:

   %Y     time of last data modification, seconds since Epoch

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

if uname | grep -q "Darwin"; then
    mod_time_fmt="-f %m"
else
    mod_time_fmt="-c %Y"
fi

จากนั้นใช้ค่านี้ในstatคำสั่งที่ต้องการ:

stat $mod_time_fmt .bashrc

7

ขึ้นอยู่กับความหมายของคำว่า "นี่" หากคุณถามว่ามีวิธีพกพาในการรับไฟล์mtimeด้วยstat(1)หรือไม่ไม่ใช่ไม่มี BSD จะแตกต่างจากลินุกซ์stat(1)stat(1)

หากคุณถามว่ามีวิธีพกพาในการรับไฟล์mtimeหรือไม่ใช่คุณสามารถทำได้ด้วยperl(1):

perl -e 'print +(stat $ARGV[0])[9], "\n"' file

5

เนื่องจาก OSX และ Ubuntu เวอร์ชันของstatมีความแตกต่างบางอย่างในstatค่าเริ่มต้นของOSX ที่เป็น terse output และstatค่าเริ่มต้นของLinux เพื่อ verbose ห่วงบางอย่างจะต้องมีการข้ามผ่าน ความเป็นไปได้อย่างหนึ่งคือการใช้นามแฝงบน OSX จะทำให้สถิติทำงานเหมือนกันทั้งคู่

หากคุณไม่ต้องการตั้งค่านามแฝงเพื่อบังคับเอาท์พุท verbose ของstatบน OSX ด้วยalias stat="stat -x"แล้วคุณไม่จำเป็นต้อง perl

stat .bashrc| grep Modify คือทั้งหมดที่คุณต้องการภายใต้ Ubuntu หากคุณตั้งค่านามแฝงดังกล่าวจะทำงานภายใต้OSX เช่นกัน

ตัวอย่างจาก Ubuntu 14.04.5 สามารถดูผลลัพธ์ที่เหมือนจริงได้จาก Ubuntu 16.04

   stat .bashrc| grep Modify
Modify: 2014-03-30 23:14:47.658210121 -0500

หากสิ่งที่คุณต้องการคือเวลาที่คุณสามารถดึงModify:และรักษาส่วนที่เหลือด้วย

stat .bashrc| grep Modify | cut -c 9-

แหล่งที่มา:

https://ss64.com/osx/stat.html

เอาต์พุตของ stat บน OSX


ฉันคิดว่าคุณไม่มีตัวเลือก -x ใน OSX
fushupinnanren

@Derry คุณถูกต้องน่าเศร้าที่ฉันต้องพึ่งพาการวิจัยสำหรับบิต OSX เนื่องจากฉันไม่มี OSX คำตอบที่ถูกต้อง
ผู้สูงอายุ Geek
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.