سؤال

وأريد أن أجد إذا تم تغيير بعض الملفات في الدقائق الثلاث الأخيرة من أجل أن تقرر ما إذا كان cp ناجحة، وإذا كان ينبغي أن exit أو مواصلة النصي. كيف يمكنني أن أفعل ذلك؟

والشكر

هل كانت مفيدة؟

المحلول

ويمكنك الحصول على وقت التعديل الأخير من ملف مع stat، والتاريخ الحالي مع date. يمكنك استخدام سلاسل التنسيق على حد سواء للحصول عليها في "ثانية منذ عصر":

current=`date +%s`
last_modified=`stat -c "%Y" $file`

وبعد ذلك، فإنه من السهل جدا لوضع هذا في حالة. على سبيل المثال:

if [ $(($current-$last_modified)) -gt 180 ]; then 
     echo "old"; 
else 
     echo "new"; 
fi

نصائح أخرى

وبناء الجملة هذا إذا يعتمد على بيان قذيفة معينة، ولكن الأوامر التاريخ لا. يمكنني استخدام باش. تعديل عند الضرورة.

if [ $(( $(date +%s) - $(date +%s -r <file>) )) -le 180 ]; then
    # was modified in last three minutes
else
    # was not modified in last three minutes
fi

وو+%s يروي تاريخ لإخراج الوقت UNIX (بت المهم هو أنه عدد صحيح في ثانية). يمكنك أيضا استخدام القانون الأساسي للحصول على هذه المعلومات - وstat -c %Y <file> القيادة هو ما يعادلها. تأكد من استخدام %Y لا %y، حتى يتسنى لك الحصول على وقت للاستخدام في ثوان.

وسوف الأمر القانون الأساسي تعطيك وقت التعديل الأخير

stat -c %y <filename>

والبحث يمكن إخراج اسم الملف إذا كان قد تم تعديل في آخر 3 دقائق.

find file1 -maxdepth 0 -mmin -3

وتغيير الطابع الزمني ملف لا يعني حقا نسخت بنجاح.
إذا كنت تصل الأرض إتلاف الملف أو نظام ملف نفدت مساحة،
وربما كنت لا تزال ترى تغيير الطابع الزمني (في حاجة لتأكيد ذلك).

وأنا لا أحصل على سياق الدقيق للاحتياجات الخاصة بك.
إذا كنت اطلاق النار على cp، فإنه يكمل والعوائد - لا يرجع في حين أنها تعمل
. لذلك، ليس عودة (مع رمز النجاح الخروج) مؤشرا جيدا للنجاح؟

وكيف ولماذا قمت بإنهاء جزئيا ضمن عملية cp منتديات أو، هل هذا السيناريو cp دفعة حلقات على قائمة الملفات ...
فإن بعض وضع يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top