我有一个目录中指向其他文件的多个符号链接。我想将这些链接转换为独立文件。
是否有命令可以执行此操作?
答案1
cp --remove-destination "$(readlink <symlink>)" <symlink>
答案2
虽然 Ignacio 的答复很好,但我想自动执行当前目录和子目录中每个符号链接文件的处理。
这是诀窍:
查找。-type l -exec cp \"{}\" \"{}.tmp$$\" \;-exec mv \"{}.tmp$$\" \"{}\" \;
希望这可以帮助!
答案3
我想到的第一个方法是将所有链接复制到新文件,然后删除所有链接。
cp <link> <link>.new
rm <link>
希望这些文件具有某种通用的命名结构,以便您可以使用通配符并只运行一次命令,否则您可能需要编写一个简单的 shell 脚本
答案4
仅供参考:Mac OS X 不支持--删除目的地标志,所以我写了一个简单的脚本放在你的 /usr/bin 目录中:
FILE=$1
TEMP=$1".tmp"
mv $FILE $TEMP
if [ -e $TEMP ]
then
cp "$(readlink $TEMP)" $FILE
if [ -f $FILE ]
then
rm $TEMP
else
echo "unln failed."
fi
fi
这个让你使用通配符:
for FILE in "$@"
do
TEMP=$FILE".tmp"
if [ -h $FILE ]
then
mv $FILE $TEMP
if [ -e $TEMP ]
then
cp "$(readlink $TEMP)" $FILE
if [ -f $FILE ]
then
rm $TEMP
else
echo "unln failed for link: $FILE"
fi
fi
fi
done