คำสั่ง mv - อย่าเขียนทับไฟล์


8

ฉันต้องการmvไฟล์และไม่เขียนทับข้อมูลที่ซ้ำกัน -bสวิทช์เพียงทำให้ไฟล์สำรองเดียวในขณะที่ผมอาจจะมีหลาย ๆ

ตามmvหน้าคน :

ส่วนต่อท้ายการสำรองข้อมูลคือ '~' ยกเว้นว่าตั้งค่าด้วย --suffix หรือ SIMPLE_BACKUP_SUFFIX วิธีการควบคุมเวอร์ชันอาจถูกเลือกผ่านตัวเลือก - แบ็คอัพหรือผ่านตัวแปรสภาพแวดล้อม VERSION_CONTROL นี่คือค่า:

none, off
ไม่ทำการสำรองข้อมูล (แม้ว่าจะมี - แบ็คอัพกำหนดไว้)
, จะไม่
ทำการสำรองข้อมูล
ที่มีหมายเลขเดิม, ไม่มี
หมายเลขหากมีการสำรองข้อมูลที่มีหมายเลข, เรียบง่ายอย่างอื่น
, ไม่เคย
ทำการสำรองง่าย ๆ เสมอ

ฉันคิดว่าฉันต้องการใช้ตัวเลือก 'ที่มีอยู่ไม่มีศูนย์' ... แต่ฉันไม่สามารถหาวิธีเรียกมันได้

หากคำสั่งของฉันคือ:

mv $src $dest

ฉันจะใช้ตัวเลือก 'ที่มีอยู่เป็นศูนย์' ได้อย่างไร


คำตอบนี้มีการตอบสนองที่ดีเกี่ยวกับการใช้cpแทนmv: unix.stackexchange.com/a/9902
Connor Leech

คำตอบ:


6

หากต้องการเปิดใช้งานexistingหรือnil(หรือตัวเลือกอื่น ๆ ) ให้ส่งค่าเหล่านั้นเป็นค่าสำหรับ--backupตัวเลือก:

mv --backup=existing "$src" "$dest"
mv --backup=nil "$src" "$dest"

ได้รับการเตือนว่านี่ไม่ได้ทำสิ่งที่คุณต้องการ:

$ mkdir foo bar
$ cp blah/* foo
$ cp blah/* bar
$ mv --backup=nil bar/* foo/* -t blah
mv: will not overwrite just-created ‘blah/a.jpg’ with ‘foo/a.jpg’
mv: will not overwrite just-created ‘blah/b.ogv’ with ‘foo/b.ogv’
mv: will not overwrite just-created ‘blah/cd ef.JpG’ with ‘foo/cd ef.JpG’

คุณต้องการnumbered/ t:

$ mv --backup=numbered bar/* foo/* -t blah
$ ls blah 
a.jpg  a.jpg.~1~  a.jpg.~2~  b.ogv  b.ogv.~1~  b.ogv.~2~  cd ef.JpG  cd ef.JpG.~1~  cd ef.JpG.~2~

ที่ดูเหมือนจะเป็นความลับจริงๆ ตัวเลือกการสำรองข้อมูลมีไว้เพื่ออะไร?
Connor Leech

1
@ConnorLeech เพื่อควบคุมการตั้งค่าการสำรองข้อมูลหรือไม่
muru

0
mv --backup=existing $src $dest

หรือ

mv --backup=nil $src $dest

หลังจากพยายามหลายครั้งฉันได้ไวยากรณ์ทำงาน - แต่ตัวเลือกศูนย์ไม่ทำงาน - แบ็คอัพ = t ทำ ขอขอบคุณ!
BeMy เพื่อน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.