Bagaimana cara memindahkan file yang meninggalkan symlink?

9

Bagaimana saya bisa memindahkan / menyalin file dari satu direktori ke direktori lain, meninggalkan symlink di direktori asli . Saya tahu ln -ssymlink membuat di tujuan, tapi saya ingin meninggalkan symlink di direktori sumber dan memindahkan file yang sebenarnya ke yang baru. Bagaimana saya bisa melakukan ini?

deox
sumber
Jawaban terbaik untuk pertanyaan ini ada di sini: unix.stackexchange.com/a/228166/7000
Sridhar Sarnobat

Jawaban:

4

Memproses file satu per satu, misalnya,

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

atau, jika menyalin, ganti mvbaris perintah dengan

    cp ./$i $new_directory/  
    rm ./$i   
waltinator
sumber
1
Versi cp / rm - apa manfaatnya? Sepertinya itu melakukan hanya jauh lebih lambat :)
Sergey
@Sergey One dapat memeriksa status keluar cpdan melanjutkan untuk menghapus hanya jika berhasil.
lgarzo
@ lgarzo: Itu akan sangat berharga jika mvtidak memeriksa apakah salinan berhasil sebelum menghapus file - tetapi itu akan menjadi bug yang serius di mv:)
Sergey
Apakah "$ new_directory" dan "<file untuk diproses>" "variabel khusus", di mana argumen terakhir yang saya berikan pada skrip akan selalu dianggap "$ new_directory" dan argumen awal apa pun yang dianggap "<file untuk diproses>" ?. Apakah ini berlaku untuk skrip lain yang saya tulis? Atau Anda menyiratkan bahwa saya harus mengisi bagian yang kosong, seperti menggunakan "$ 1" dan "$ 2"? Maaf atas pertanyaannya tetapi saya sangat baru dalam hal pengkodean secara umum.
deox
1
Ganti $original_directorydan $new_directorydengan direktori yang ingin Anda pindahkan dari / ke, atau atur seperti ini original_directory=/home/walt/from. Untuk digunakan dalam skrip, Anda harus menguraikan argumen sendiri. Lihat getopts builtin di man bash.
waltinator