ค้นหาเว็บไซต์

วิธีคัดลอกไฟล์ไปยังหลายไดเรกทอรีใน Linux


ในขณะที่เรียนรู้ Linux ถือเป็นบรรทัดฐานสำหรับมือใหม่ที่จะพิมพ์คำสั่งหลาย ๆ คำต่อไปเพื่อทำงานง่ายๆ ให้สำเร็จ สิ่งนี้สามารถเข้าใจได้โดยเฉพาะอย่างยิ่งเมื่อเราเพิ่งเริ่มคุ้นเคยกับการใช้เทอร์มินัล

อย่างไรก็ตาม เมื่อคุณตั้งตารอที่จะเป็นผู้ใช้ Linux ระดับสูง การเรียนรู้สิ่งที่ฉันเรียกว่า “คำสั่งทางลัด” สามารถลดแนวโน้มการเสียเวลาได้อย่างมาก

ในบทความนี้ เราจะอธิบายวิธีง่ายๆ โดยใช้คำสั่งเดียวเพื่อคัดลอกไฟล์ไปยังหลายไดเร็กทอรีใน Linux

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

cp [options….] source(s) destination

หรือคุณสามารถใช้คำสั่ง Advanced-copy ซึ่งจะแสดงแถบความคืบหน้าขณะคัดลอกไฟล์/โฟลเดอร์ขนาดใหญ่ใน Linux

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

cp -v /home/aaronkilik/bin/sys_info.sh /home/aaronkilik/test
cp -v /home/aaronkilik/bin/sys_info.sh /home/aaronkilik/tmp

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

เพื่อแก้ไขปัญหานี้ คุณสามารถใช้คำสั่ง echo คำสั่ง pipe, xargs ร่วมกับคำสั่ง cp ในรูปแบบด้านล่าง:

echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

ในรูปแบบด้านบน เส้นทางไปยังไดเร็กทอรี (dir1,dir2,dir3…..dirN) จะถูกสะท้อนและไพพ์เป็นอินพุตไปยังคำสั่ง xargs โดยที่:

  1. -n 1 – บอกให้ xargs ใช้ได้สูงสุด 1 อาร์กิวเมนต์ต่อบรรทัดคำสั่ง และส่งไปยังคำสั่ง cp
  2. cp – ใช้สำหรับคัดลอกไฟล์
  3. -v – เปิดใช้งานโหมด verbose เพื่อแสดงรายละเอียดของการดำเนินการคัดลอก

ลองอ่าน man page ของคำสั่ง cp, echo และ xargs เพื่อค้นหาข้อมูลการใช้งานขั้นสูงที่เป็นประโยชน์:

man cp
man echo
man xargs

เพียงเท่านี้ คุณสามารถส่งคำถามเกี่ยวกับหัวข้อหรือข้อเสนอแนะใดๆ ผ่านทางแบบฟอร์มความคิดเห็นด้านล่างได้ คุณอาจต้องการอ่านเกี่ยวกับคำสั่งความคืบหน้าซึ่งช่วยในการติดตามความคืบหน้าของ (cp, mv, dd, tar ฯลฯ) คำสั่งต่างๆ ที่รันอยู่บน Linux ในปัจจุบัน