ก่อนอื่น โปรดแก้ตัวภาษาอังกฤษที่ไม่ค่อยดีของฉัน
ฉันกำลังพยายามเขียนเชลล์สคริปต์เพื่อล้างไฟล์บางไฟล์บางประเภทในโฟลเดอร์สำรองของฉัน
ฉันต้องการลบไฟล์บางประเภท ยกเว้น 10 ไฟล์ใหม่ล่าสุดในแต่ละโฟลเดอร์
โครงสร้างโฟลเดอร์มีลักษณะดังนี้:
โฟลเดอร์รูท
â
âââ โฟลเดอร์_1
â âââ file_1.txt
â âââ file_2.txt
â âââ file_n.txt
â
âââ โฟลเดอร์_2
â âââ file_1.txt
â âââ file_2.txt
â âââ file_n.txt
â
âââ folder_n
â âââ file_1.txt
â âââ file_2.txt
â âââ file_n.txt
â
ฉันใช้สคริปต์จาก เดวิด ฟอสเตอร์ เป็นพื้นฐาน แต่ไม่สามารถหาวิธีทำให้มันทำงานในโฟลเดอร์ต่าง ๆ แยกกันโดยไม่ต้องเขียนชื่อแต่ละโฟลเดอร์ด้วยตนเองในสคริปต์
ขณะนี้สคริปต์มีลักษณะดังนี้:
ค้นหา /volume1/rootfolder/ -type f -name *.txt -printf '%T@ %p\0' |
sort --ศูนย์สิ้นสุด --reverse --numeric-sort --field-separator=' ' --key 1,1 |
เพ่งพิศ -F ' ' -v RS='\0' -v ORS='\0' -vtain_count=10 \
'เริ่มต้น{ maxage = systime() -tain_younger_days * 24 * 3600; }
(NR > Retain_count) && (int($1) < maxage) { พิมพ์(substr($0, ความยาว($1) + 2)); }' |
xargs -r0 -- rm --
แต่ปัญหาคือมันลบทุกไฟล์ทุกโฟลเดอร์ ยกเว้น 10 ล่าสุด โดยรวมแล้วฉันมีเพียง 10 ไฟล์ในทุกโฟลเดอร์ ไม่ใช่ 10 ไฟล์ในแต่ละโฟลเดอร์
โปรดช่วยฉันหาวิธีสร้างสคริปต์เพื่อประมวลผลแต่ละโฟลเดอร์แยกกัน