我正在尝试修改thinkbot 的 bash 脚本以将点文件符号链接到主目录,但我想将文件存储在子目录中。
Thoughtbot 脚本的原文是:
#!/bin/sh
for name in *; do
target="$HOME/.$name"
if [ -e "$target" ]; then
if [ ! -L "$target" ]; then
echo "WARNING: $target exists but is not a symlink."
fi
else
echo "Creating $target"
ln -s "$PWD/$name" "$target"
fi
done
我的点文件位于名为files
. 我尝试将 for 循环更改为:
for name in files/*
, for name in ./files/*
, for name in 'files/*'
, 等等,但这些都不起作用。
经过一番研究,我发现您可以使用find
如下方式遍历子目录中的文件:
find ./files -type f -exec "do stuff here" \;
而且我看到我可以使用 来引用每个文件'{}'
,但我不明白如何对文件进行操作并创建符号链接。
我试过了:
find ./files -type f -exec "ln -s '{}' $HOME/'{}'" \;
但这不起作用,因为'{}'
它是来自父目录的文件的相对路径,而不仅仅是文件的名称。
这样做的正确方法是什么?
作为参考,这是我的目录结构: