ฉันกำลังทำงานกับสคริปต์ที่จะคัดลอกเฉพาะไฟล์ที่สร้างขึ้นภายในวันสุดท้ายไปยังโฟลเดอร์อื่น ปัญหาที่ฉันมีคือสคริปต์ที่ฉันได้คัดลอกไฟล์ทั้งหมดในไดเรกทอรีต้นทางแทนที่จะเป็นไฟล์ที่อายุน้อยกว่าหนึ่งวัน
นี่คือสิ่งที่ฉันมี:
find . -mtime -1 -exec cp --preserve --parents -a "{}" /somefolder \;
รหัสด้านบนคัดลอกไฟล์ทั้งหมดในไดเรกทอรีต้นทาง หากฉันลบข้อโต้แย้งทั้งหมดสำหรับ 'cp' มันจะทำงานได้:
find . -mtime -1 -exec cp "{}" /somefolder \;
โค้ดด้านบนคัดลอกเฉพาะไฟล์ใหม่ล่าสุดเท่าที่ฉันต้องการ แต่ฉันต้องการรักษาแอตทริบิวต์โดยใช้อาร์กิวเมนต์ cp
ฉันได้ลองตัวแปรแล้วและสำหรับการวนรอบคิดว่าตัวเลือก -exec อาจเป็นปัญหา:
files="$(find -mtime -1)"
for file in "$files"
do
cp --parents --preserve -a file /somefolder
อย่างไรก็ตามผลการวนซ้ำด้านบนในปัญหาเดียวกันไฟล์ทั้งหมดจะถูกคัดลอก หากฉัน echo $ files เฉพาะไฟล์ที่ฉันต้องการจะแสดง
ฉันจะทำให้เรื่องนี้ทำงานได้อย่างไร
find /sourcefolder -type f -mtime -1 -exec cp -a "{}" /somefolder \;