シンボリックリンクを残してファイルを移動するにはどうすればよいですか?


9

あるディレクトリから別のディレクトリにファイルを移動/コピーして、シンボリックリンクを元のディレクトリに残す方法を教えてください。でln -s宛先にシンボリックリンクが作成されることはわかっていますが、シンボリックリンクをソースディレクトリに残し、実際のファイルを新しいファイルに移動したいと考えています。これどうやってするの?


この質問に対する最良の答えはここにあります:unix.stackexchange.com/a/228166/7000
Sridhar Sarnobat '30

回答:


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の終了ステータスを確認し、cp成功した場合にのみ削除を続行できます。
lgarzo '25年

@lgarzo:mvファイルを削除する前にコピーが成功したかどうかをチェックしなかった場合、それは価値があります-しかし、それはmv:)の深刻なバグになるでしょう
Sergey

「$ new_directory」および「<files to process>」は「特殊変数」であり、スクリプトに与える最後の引数は常に「$ new_directory」と見なされ、初期引数は「<files to process>」と見なされます。これは私が書いた他のスクリプトにも当てはまりますか?それとも、「$ 1」と「$ 2」を使用するなど、空白を埋める必要があることを意味していますか?質問は申し訳ありませんが、私は一般的にコーディングに非常に慣れていません。
deox

1
$original_directoryand $new_directoryを移動元/移動先のディレクトリに置き換えるか、このように設定しますoriginal_directory=/home/walt/from。スクリプトで使用するには、自分で引数を解析する必要があります。参照してください。組み込みgetoptsは中をman bash
ワルティネーター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.