วิธีการย้ายไฟล์ที่ทิ้ง symlink ไว้ด้านหลัง?


9

ฉันสามารถย้าย / คัดลอกไฟล์จากที่หนึ่งไปยังอีกไดเรกทอรีออก symlinks ในไดเรกทอรีเดิม ฉันรู้ว่าln -ssymlinks สร้างในปลายทาง แต่ฉันต้องการออกจาก symlink ในไดเรกทอรีต้นทางและย้ายไฟล์จริงไปยังใหม่ ฉันจะทำสิ่งนี้ได้อย่างไร


คำตอบที่ดีที่สุดสำหรับคำถามนี้อยู่ที่นี่: unix.stackexchange.com/a/228166/7000
Sridhar Sarnobat

คำตอบ:


4

ประมวลผลไฟล์แต่ละรายการเช่น

cd $original_directory  
for i in <files to process> ; do  
    mv ./$i $new_directory/  
    ln -s $new_directory/$i ./$i
done

หรือหากการคัดลอกให้แทนที่mvบรรทัดคำสั่งด้วย

    cp ./$i $new_directory/  
    rm ./$i   

1
รุ่น cp / rm - ประโยชน์ที่เป็นไปได้ของมันคืออะไร? ดูเหมือนว่ามันจะช้ากว่ากันมากเท่านั้น :)
Sergey

@Sergey One สามารถตรวจสอบสถานะการออกcpและดำเนินการลบต่อเมื่อประสบความสำเร็จเท่านั้น
lgarzo

@lgarzo: นั่นจะมีคุณค่าถ้าmvไม่ได้รับการตรวจสอบหากสำเนาประสบความสำเร็จก่อนที่จะลบไฟล์ - แต่ที่จะเป็นข้อผิดพลาดร้ายแรงในmv:)
Sergey

"$ new_directory" และ "<ไฟล์ที่จะประมวลผล>" "ตัวแปรพิเศษ" หรือไม่ซึ่งอาร์กิวเมนต์สุดท้ายที่ฉันให้กับสคริปต์จะถูกพิจารณาว่าเป็น "$ new_directory" เสมอและอาร์กิวเมนต์เริ่มต้นใดที่ถือว่าเป็น "<files to process>" สิ่งนี้ใช้ได้กับสคริปต์อื่น ๆ ที่ฉันเขียนหรือไม่? หรือคุณหมายถึงว่าฉันควรเติมในช่องว่างเช่นใช้ "$ 1" และ "$ 2" ขออภัยสำหรับคำถาม แต่ฉันใหม่มากที่จะเขียนโค้ดโดยทั่วไป
deox

1
แทนที่$original_directoryและ$new_directoryด้วยไดเรกทอรีที่คุณต้องการย้ายจาก / ไปยังหรือตั้งเป็นoriginal_directory=/home/walt/fromดังนี้ สำหรับใช้ในสคริปต์คุณต้องวิเคราะห์ข้อโต้แย้งด้วยตัวเอง ดูgetopts builtinman bashใน
waltinator
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.