使用通配符创建文件的符号链接

gbe*_*ley 8 shell bash symlink wildcards

我想为多个文件创建符号链接:

ln -s dev-*.php 's/dev-(.*\.php)/$1/'

Results hoped for:  
    site.php links to dev-site.php  
    file.php links to dev-file.php
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最简洁方法是什么?

小智 11

好吧,如果它们都在同一个目录中,您可以在 bash 或任何其他 Bourne-style/POSIX shell 中执行以下操作:

for FILE in dev-*; do ln -s "$FILE" "${FILE#dev-}"; done
Run Code Online (Sandbox Code Playgroud)

这将创建没有“dev-”的符号链接到以“dev-”开头的文件。


Arc*_*ege 5

我通常使用简短的单线。

for file in dev-*.php; do ln -s $file $(echo "$file" | sed 's/^dev-//'); done
Run Code Online (Sandbox Code Playgroud)

这会循环遍历“dev-*.php”文件,获取不带“dev-”的新名称,然后创建符号链接。