我的目录中有大约 40 个符号链接,如下所示:
lrwxr-xr-x 1 anna staff 45B 22 Jun 11:20 menu-bg-left.jpg -> ../../../../../hg/www/images/menu-bg-left.jpg
lrwxr-xr-x 1 anna staff 46B 22 Jun 11:20 menu-bg-right.jpg -> ../../../../../hg/www/images/menu-bg-right.jpg
我想将它们全部更改为不同的目录:
lrwxr-xr-x 1 anna staff 45B 22 Jun 11:20 menu-bg-left.jpg -> ../../../../../code-local/www/images/menu-bg-left.jpg
lrwxr-xr-x 1 anna staff 46B 22 Jun 11:20 menu-bg-right.jpg -> ../../../../../code-local/www/images/menu-bg-right.jpg
由于各种原因,我不能仅仅将hg
目录符号链接到code-local
目录,我需要更改链接本身。
我可以以某种方式编写这个脚本吗?
答案1
您将 dir 更改为要放置符号链接的目录。然后,在 for 循环中从源目录读取所有图像。每次运行循环都会创建一个符号链接。
#!/bin/bash
for file in /to/directory/where/symlinks/should/be/*
do
rm $file
ln -s /where/your/image/files/are/$(basename $file) $file
done
答案2
您可以使用和 shell 的组合readlink
,例如:
#!/bin/sh
cd /to/directory/where/symlinks/should/be
for i in * ; do
if [ -h $i ]; then
NEWTARGET=`readlink $i | sed 's,old/path/to/files,new/path/to/files,'`
rm -f $i
ln -s $NEWTARGET $i
fi
done