ฉันต้องการย้ายไฟล์ทั้งหมดจากไดเรกทอรีทิ้งโครงสร้างไดเรกทอรี
น่าเสียดายที่บางไฟล์มีชื่อไฟล์เหมือนกัน ฉันกำลังมองหา อย่างนี้:
find /tmp/dirtree -type f -exec mv -i {} . \;
ฉันจะป้องกันการเขียนทับไฟล์ขนาดใหญ่ในระหว่างกระบวนการได้อย่างไร?
ฉันต้องการย้ายไฟล์ทั้งหมดจากไดเรกทอรีทิ้งโครงสร้างไดเรกทอรี
น่าเสียดายที่บางไฟล์มีชื่อไฟล์เหมือนกัน ฉันกำลังมองหา อย่างนี้:
find /tmp/dirtree -type f -exec mv -i {} . \;
ฉันจะป้องกันการเขียนทับไฟล์ขนาดใหญ่ในระหว่างกระบวนการได้อย่างไร?
คำตอบ:
สร้าง mymv.pl
สคริปต์ Perl:
#!/usr/bin/perl
use File::Copy;
$file = shift;
($name = $file) =~ s#.*/##;
if (-f $name and -s $file < -s $name) {
warn "$name not moved";
} else {
move($file, $name);
}
จากนั้นเปลี่ยนสายเป็น
find /tmp/dirtree -type f -exec perl mymv.pl {} \;
perl
พารามิเตอร์หลัง-exec
. ฉันมีปัญหาที่น่าสงสัยโดยปราศจากสิ่งนั้น ขอบคุณ.