Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

คำสั่ง Linux 'cp':คัดลอกไฟล์และไดเรกทอรี

บทแนะนำนี้จะสอนให้คุณใช้ Linux cp command – คำสั่งที่คัดลอกไฟล์จากไดเร็กทอรีหนึ่งไปยังไดเร็กทอรีอื่น

Linux เป็นแพลตฟอร์มที่ต้องการสำหรับนักพัฒนาจำนวนมาก หากคุณเพิ่งเริ่มใช้ Linux จะใช้เวลาไม่นานก่อนที่คุณจะต้องเริ่มคัดลอกไฟล์จากที่หนึ่งไปยังอีกที่หนึ่ง – อ่านคำอธิบายของ Linux cp คำสั่งและคำแนะนำในการใช้งาน

cp คำสั่ง

ที่ cp คำสั่งมีวัตถุประสงค์ง่ายๆ คือ เพื่อคัดลอกไฟล์และโฟลเดอร์จากที่หนึ่งไปยังอีกที่หนึ่ง

ซึ่งสามารถทำได้กับระบบไฟล์ใดๆ ที่เชื่อมต่อกับระบบ Linux และจะเก็บไฟล์ต้นฉบับไว้พร้อมทั้งให้ตัวเลือกในการเปลี่ยนชื่อและเขียนทับไฟล์ที่คัดลอก

ไวยากรณ์สำหรับ cp คำสั่งตามคู่มือหน้าคือ:

cp [OPTIONS] SOURCE DESTINATION

cp ตัวเลือกคำสั่ง

เมื่อป้อนคำสั่งคัดลอก คุณจะสามารถระบุสิ่งที่คุณต้องการให้ทำกับไฟล์ที่มีอยู่แล้ว และกำหนดว่าจะรวมเนื้อหาไดเร็กทอรีไว้ในสำเนาหรือไม่ ต่อไปนี้คือตัวเลือกที่ใช้กันทั่วไป:

-b สำรองข้อมูล (สำรองไฟล์ปลายทางแต่ละไฟล์)

-f บังคับ (หากไม่สามารถเปิดไฟล์ปลายทางที่มีอยู่ ให้ลบออกแล้วลองอีกครั้ง)

-i โต้ตอบ (แจ้งก่อนเขียนทับ)

-n No-clobber (อย่าเขียนทับไฟล์ที่มีอยู่)

-p สงวน (โหมดคงไว้, ความเป็นเจ้าของ, การประทับเวลา)

-r เรียกซ้ำ (คัดลอกไดเรกทอรีและเนื้อหา)

-u อัปเดต (คัดลอกเฉพาะเมื่อไฟล์ SOURCE ใหม่กว่าไฟล์ปลายทางหรือเมื่อไฟล์ปลายทางหายไป)

-v ละเอียด (อธิบายสิ่งที่กำลังทำ)

ตัวอย่างคำสั่งสำหรับการคัดลอกไฟล์และไดเรกทอรีโดยใช้ cp

การคัดลอกไฟล์เดียว

เพียงป้อนคำสั่ง cp ตามด้วยเส้นทางของไฟล์ต้นทางและปลายทาง โดยคั่นด้วยช่องว่างเดียว:

cp /path/to/source/file.txt /path/to/destination/file.txt

การคัดลอกไดเรกทอรีและเนื้อหา

ป้อนคำสั่ง cp ตามด้วยอ็อพชัน -r (แบบเรียกซ้ำ) และพาธของไดเร็กทอรีต้นทางและปลายทาง โดยคั่นด้วยช่องว่างเดียว ไดเรกทอรีต้นทางทั้งหมดจะถูกคัดลอกไปยังไดเรกทอรีปลายทางด้วยชื่อเดิม:

cp -r /path/to/source_directory /path/to/destination_directory

การคัดลอกไฟล์หรือไดเรกทอรีหลายรายการ

ในการคัดลอกไฟล์หลายไฟล์ไปยังไดเร็กทอรีปลายทาง ให้ระบุไฟล์ทั้งหมดโดยคั่นด้วยช่องว่าง – เส้นทางสุดท้ายที่กำหนดจะถือเป็นปลายทาง:

cp source_file_1.txt source_file_2.txt path/to/destination_directory

คุณยังสามารถทำเช่นเดียวกันนี้เมื่อคัดลอกหลายไดเร็กทอรีหากคุณผ่าน -r (เรียกซ้ำ) ตัวเลือก:

cp -r source_directory_1/ source_directory_2/ /path/to/destination_directory

ในการคัดลอกไฟล์และไดเร็กทอรีทั้งหมดในไดเร็กทอรีต้นทางไปยังไดเร็กทอรีอื่น คุณสามารถใช้ไวด์การ์ด (*):

cp -r /path/to/source/* /path/to/destination

การคัดลอกไฟล์ด้วยชื่อไฟล์หรือนามสกุล

คุณสามารถเพิ่มมาสก์ชื่อไฟล์เพื่อคัดลอกไฟล์ที่มีชื่อหรือนามสกุลตรงกันโดยใช้สัญลักษณ์แทน (* ). ต่อไปนี้เป็นวิธีคัดลอกรูปภาพ JPG ทุกรูปจากไดเรกทอรีต้นทางไปยังไดเรกทอรีปลายทาง:

cp /path/to/source/*.jpg path/to/source/*.JPG /path/to/destination_directory

กำลังคัดลอกไฟล์ symlink

ไฟล์ Symlink เป็นไฟล์ที่ไม่มีข้อมูลและเป็นเพียงการอ้างอิงไปยังไฟล์อื่นบนดิสก์ โดยค่าเริ่มต้นจะถูกยกเว้นเมื่อใช้ cp สั่งการ. หากต้องการรวมไว้ ให้ใช้ -d ตัวเลือก:

cp –d source_file_1.txt /path/to/destination_directory

คัดลอกเฉพาะไฟล์ที่มีอายุน้อยกว่า 7 วัน

คุณสามารถรวม cp . ได้ คำสั่งกับคำสั่งอื่นๆ เพื่อควบคุมสิ่งที่คุณกำลังคัดลอกได้มากขึ้น ตัวอย่างนี้จะคัดลอกเท่านั้น ไฟล์ที่อายุน้อยกว่า 7 วัน โดยการกรองโดยใช้ find คำสั่ง แล้วดำเนินการ cp คำสั่ง:

find /path/to/files* -mtime -7 -exec cp {} /mnt/nas/ \;

การดูผลลัพธ์ของสำเนาของคุณ

คุณสามารถดูเนื้อหาของไดเรกทอรีปลายทางได้โดยใช้ ls คำสั่ง:

ls -hl /path/to/destination_directory

บทสรุป

การคัดลอกไฟล์เป็นงานประจำวันที่จำเป็น และไวยากรณ์จะกลายเป็นลักษณะที่สองของคุณอย่างรวดเร็ว สำหรับงานบรรทัดคำสั่งทั่วไปอื่นๆ ของ Linux โปรดดูบทความอื่นๆ ของเรา