如何创建指向不同目录中所有可执行文件的软链接?

如何创建指向不同目录中所有可执行文件的软链接?

我正在尝试在 cygwin 中创建指向 mingw 二进制文件的软链接。

到目前为止我已经:find /cygdrive/c/MinGW/bin/ -name "*.exe" -exec ln -s {} basename {} \;

但我得到:

ln:目标'/cygdrive/c/MinGW/bin/addr2line.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/ar.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/as.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/c++.exe'不是目录
ln:目标“/cygdrive/c/MinGW/bin/c++filt.exe”不是目录
ln:目标'/cygdrive/c/MinGW/bin/cc.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/cpp.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/dlltool.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/dllwrap.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/elfedit.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/envsubst.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/g++.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/gcc.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/gcov.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/gdb.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/gdbserver.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/gettext.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/gprof.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/iconv.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/ld.bfd.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/ld.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/mingw-get.exe'不是目录
ln:目标“/cygdrive/c/MinGW/bin/mingw32-c++.exe”不是目录
ln:目标'/cygdrive/c/MinGW/bin/mingw32-cc.exe'不是目录
ln: 目标“/cygdrive/c/MinGW/bin/mingw32-g++-4.6.2.exe”不是目录
ln:目标'/cygdrive/c/MinGW/bin/mingw32-g++.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/mingw32-gcc-4.6.2.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/mingw32-gcc.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/mingw32-make.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgattrib.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgcat.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgcmp.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgcomm.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgconv.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgen.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgexec.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgfilter.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgfmt.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msggrep.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msginit.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgmerge.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msgunfmt.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/msguniq.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/ngettext.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/nm.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/objcopy.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/objdump.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/pkginfo.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/quserex-test.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/ranlib.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/readelf.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/recode-sr-latin.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/size.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/strings.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/strip.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/windmc.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/windres.exe'不是目录
ln:目标'/cygdrive/c/MinGW/bin/xgettext.exe'不是目录

答案1

由于ln接受目录作为目标:

ln -s /cygdrive/c/MinGW/bin/*.exe /path/to/otherdirectory/

答案2

为了使您的命令正常工作,我认为您无法避免使用子外壳,例如:

find /cygdrive/c/MinGW/bin/ -name "*.exe" -print0 | xargs -0 -n1 bash -c 'ln -s {} $(basename {})'

如果所有文件都在同一个目录中,您也可以使用cp -s

cp -s /cygdrive/c/MinGW/bin/* .

答案3

for i in /source/directory/*.exe; do
    ln -s $i /destination/directory/`basename $i`
done

相关内容