ฉันจะคัดลอกโฟลเดอร์พร้อมไฟล์ไปยังโฟลเดอร์อื่นใน Unix / Linux ได้อย่างไร [ปิด]


1191

ฉันมีปัญหาบางอย่างเพื่อคัดลอกโฟลเดอร์ที่มีไฟล์ในโฟลเดอร์นั้นไปยังโฟลเดอร์อื่น คำสั่งcp -rไม่คัดลอกไฟล์ในโฟลเดอร์




ฉันหวังว่าสิ่งนี้จะถูกย้ายไปยัง SE ซึ่งเป็นหัวข้อเพิ่มเติม
jrh

6
การเขียนโปรแกรมทุบตีในหัวข้อ
xskxzr

คำตอบ:


1978

-Rตัวเลือกที่คุณกำลังมองหาอยู่

cp -R path_to_source path_to_destination/
  • หากdestinationไม่มีอยู่มันจะถูกสร้างขึ้น
  • -Rcopy directories recursivelyวิธี นอกจากนี้คุณยังสามารถใช้งานได้-rเนื่องจากตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • หมายเหตุ: ความแตกต่างกับการเพิ่มต่อท้าย/ตาม @ muni764 ของความคิดเห็น

5
ฉันสงสัยว่าทำไมคำสั่งที่แน่นอนใน dockerfile คัดลอกไฟล์ไดเรกทอรีต้นฉบับทั้งหมดไปยังปลายทางแทนที่จะคัดลอกเฉพาะไดเรกทอรีทั้งหมด
holms

4
ฉันเชื่อว่า '/' ในตอนท้ายจะสร้างความแตกต่างและอาจเป็นประสบการณ์ของคุณ หากแหล่งที่มามีเครื่องหมายสแลชต่อท้ายจะคัดลอกสิ่งที่อยู่ในไดเรกทอรีเท่านั้น หากไม่รวมเครื่องหมายสแลชต่อท้ายมันจะคัดลอกไดเรกทอรีด้วยและจากนั้นเนื้อหาภายใน หน่วยความจำของฉันคือพฤติกรรมนี้แตกต่างกันไปตามคำสั่งและอาจมีเหตุการณ์โดยระบบปฏิบัติการเล็กน้อย นี่คือข้อมูลอ้างอิงที่มีข้อมูลเพิ่มเติม
OllieBrown

23
ฉันจะบอกว่าถ้าคุณไม่ต้องการที่จะรวมแหล่งที่มาและคุณต้องการให้แน่ใจว่าทุกอย่างจะถูกคัดลอก (symlink, ไฟล์ที่ซ่อนอยู่) โดยไม่ต้องคัดลอกโฟลเดอร์หลักที่มาคือการใช้ -ra source / ปลายทาง สิ่งนี้จะช่วยให้แน่ใจว่าคัดลอกเนื้อหาของโฟลเดอร์ แต่ไม่ใช่ในโฟลเดอร์พาเรนต์ซึ่งบางครั้งก็มีประโยชน์ และความแตกต่างคือ/
muni764

สิ่งนี้ดูเหมือนว่าจะทำงานอย่างถูกต้องหากไดเรกทอรีที่จะคัดลอกเป็นลิงก์สัญลักษณ์ซึ่งเป็นกรณีการใช้งานของฉัน
Gdalya

3
สังเกตความสำคัญของ "Slash dot" ในแหล่งข้อมูลของคุณในcp -r src/. destฉันรู้ว่ามันถูกกล่าวถึง แต่ฉันก็ยังคงพลาดทุกครั้ง
bbeecher

368

คุณกำลังมองหาcpคำสั่ง คุณต้องเปลี่ยนไดเรกทอรีเพื่อให้คุณอยู่นอกไดเรกทอรีที่คุณพยายามคัดลอก

หากมีการเรียกไดเรกทอรีที่คุณกำลังคัดลอกdir1และคุณต้องการคัดลอกไปยัง/home/Picturesโฟลเดอร์ของคุณ:

cp -r dir1/ ~/Pictures/

ลีนุกซ์นั้นคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และต้องการให้/แต่ละไดเร็กตอรี่นั้นรู้ว่าไม่ใช่ไฟล์ ~เป็นอักขระพิเศษในเทอร์มินัลที่ประเมินโดยอัตโนมัติไปยังไดเรกทอรีบ้านของผู้ใช้ปัจจุบัน pwdหากคุณจำเป็นต้องรู้ว่าสิ่งที่ไดเรกทอรีที่คุณอยู่ในใช้คำสั่ง

เมื่อคุณไม่ทราบวิธีการใช้คำสั่ง Linux มีหน้าคู่มือที่คุณสามารถอ้างถึงได้โดยพิมพ์:

man [insert command here]

ที่หน้าจอพร้อมรับ

นอกจากนี้หากต้องการพา ธ ไฟล์แบบยาวโดยอัตโนมัติเมื่อพิมพ์ในเทอร์มินัลคุณสามารถกดTabหลังจากคุณเริ่มพิมพ์พา ธ และคุณจะได้รับตัวเลือกหรือจะแทรกส่วนที่เหลือของพา ธ


6
เพื่อชี้แจงเพิ่มเติม-rตัวเลือกในสิ่งนี้จะคัดลอกไดเรกทอรีซ้ำ
TVann

5
ไม่ OP ไม่ระบุว่าเขาได้รับการใช้cp -rคำสั่ง แต่มันก็ไม่ได้ทำงานอย่างถูกต้อง?
MD XF

4
เหตุผลที่ฉันรวมข้อมูลเกี่ยวกับ manpages คือค่าสถานะเหล่านี้สามารถกระจายได้ แต่ส่วนใหญ่ก็จะปรากฏขึ้น-r, --recursiveและ-Rเทียบเท่า นอกจากนี้ยังจะให้ข้อผิดพลาดทั่วไป ฯลฯ ซึ่งเป็นสิ่งที่ดี
Alex W

6
หากคุณต้องการที่จะคัดลอก DIRECTORY แบบพกพาและไม่ใช่แค่เนื้อหาเท่านั้นให้เว้นเส้นประต่อท้ายในโฟลเดอร์ต้นทางเช่น cp -r dir1 ~/Pictures/
mehtunguh

105

ใช้:

$ cp -R SRCFOLDER DESTFOLDER/

4
นี่เป็นวิธีที่ฉันทำและdemo1_copyไม่ได้มีอยู่จริง$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/
HattrickNZ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.