如何移动文件而留下符号链接?


9

如何将文件从一个目录移动/复制到另一个目录,而将符号链接保留在原始目录中。我知道ln -s在目标位置创建符号链接,但是我想将符号链接保留在源目录中,然后将实际文件移动到新目录中。我怎样才能做到这一点?


这个问题的最佳答案是在这里:unix.stackexchange.com/a/228166/7000
Sridhar Sarnobat '16

Answers:


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 2011年

@lgarzo:mv如果在删除文件之前不检查复制是否成功,那将很有价值-但这将是一个严重的错误mv:)
Sergey

是“ $ new_directory”和“ <要处理的文件>”“特殊变量”,我给出的脚本的最后一个参数将始终被视为“ $ new_directory”,而任何初始参数都被视为“ <要处理的文件>”?这是否适用于我编写的任何其他脚本?还是在暗示我应该填写空白,例如使用“ $ 1”和“ $ 2”?很抱歉这个问题,但是我一般对编码还是陌生的。
deox

1
用您要从中移至的目录替换$original_directory$new_directory,或像这样设置它们original_directory=/home/walt/from。为了在脚本中使用,您必须自己解析参数。见getopts的内置man bash
waltinator
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.