แทนที่โฟลเดอร์ที่มีอยู่ด้วยคำสั่ง mv


6

ขออภัยหากคำถามนี้ถูกถามไปแล้วฉันไม่พบอะไรเลย ...

ให้บอกว่าฉันต้องการแทนที่ 'oldstuff' ด้วย 'newstuff' โดยทั่วไปการตั้งชื่อใหม่เพื่อแทนที่ ฉันลองใช้คำสั่งนี้:

mv ~/newstuff ~/oldstuff

แต่นั่นเป็นการย้ายโฟลเดอร์ 'newstuff' ไปยังโฟลเดอร์ 'oldstuff' เท่านั้น

ฉันจะแทนที่ 'oldstuff' ด้วย 'newstuff' ได้อย่างไร

ฉันใช้ OS X 10.7

คำตอบ:


5

ถ้า ~/oldstuff ไม่ได้อยู่,

mv ~/newstuff ~/oldstuff

จะเปลี่ยนชื่อ newstuff ไปยัง oldstuff. หากมีอยู่ก็จะย้าย newstuff เข้าไป oldstuff.

ดังนั้นเพื่อตอบคำถามของคุณก่อนอื่นให้ลบ ~/oldstuff (หรือเปลี่ยนชื่อเป็น olderstuffดูคำถามนี้อีกครั้งเกี่ยวกับวิธีการใช้งาน) จากนั้นใช้ mv คำสั่งตามที่คุณทำ


oldstuff มีอยู่แม้ว่า นั่นเป็นปัญหามีอยู่แล้วที่จะทำโดยไม่ต้องออกคำสั่งลบก่อนหรือไม่
Jacob Wood

@JacobLukeWood: ไม่สามารถมีสองไดเรกทอรีที่มีชื่อเดียวกัน หากคุณต้องการย้ายเนื้อหาไปยังไดเรกทอรีที่มีอยู่ให้ใช้ mv newstuff/* oldstuff (อาจซับซ้อนกว่านี้ถ้า .files ที่มีส่วนเกี่ยวข้อง).
choroba

ฉันลงเอยทำสิ่งที่คุณพูดโดยใช้สัญลักษณ์แทน (*) ด้วยขอบคุณ :)
Jacob Wood

3

อีกวิธีคือการใช้ rsync (ระวังด้วยเครื่องหมายสแลชท้ายมันสำคัญ)

สิ่งนี้จะคัดลอกทุกสิ่งใน newstuff เป็น oldstuff

rsync -av ~/newstuff/ ~/oldstuff

และรหัสด้านล่างจะคัดลอกทุกสิ่งใน newstuff ลงใน oldstuff และลบสิ่งใด ๆ ใน oldstuff ซึ่งไม่ได้อยู่ใน newstuff

rsync -av --delete ~/newstuff/ ~/oldstuff

โปรดทราบว่าคำสั่งเหล่านี้จะไม่ทำสิ่งใดกับไฟล์ใน ~ / newstuff หากคุณต้องการลบพวกเขาคุณจะต้องทำ rm คำสั่งแยกต่างหาก


2

คุณสามารถลอง:

mv -f folder1/* folder2 && rmdir folder1

จะย้ายทุกอย่างค่ะ folder1รวมถึงไฟล์และไดเรกทอรีไปยัง folder2.

-f: ไม่ต้องแจ้งก่อนที่จะเขียนทับเทียบเท่า --reply=yes.

mv man page .


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