如何用for循环为指定目录文件创建无版本号的符号链接?
解决方案
你可以用Bash的for循环结合字符串替换来实现需求,具体命令如下:
for file in /root/Desktop/match/jars/44a65820/*; do filename=$(basename "$file") linkname=${filename/-44a65820/} ln -s "$file" "/root/Desktop/match/jars/$linkname" done
命令解释
for file in /root/Desktop/match/jars/44a65820/*:遍历44a65820目录下的所有文件(含子目录),如果只想处理Jar文件,把*替换为*.jar即可filename=$(basename "$file"):提取文件的纯文件名(去掉完整路径)linkname=${filename/-44a65820/}:通过Bash参数替换,把文件名中的-44a65820字符串删除,得到不带版本号的链接名ln -s "$file" "/root/Desktop/match/jars/$linkname":创建符号链接,将原文件链接到上级目录的新文件名
额外说明
- 如果上级目录已存在同名链接,命令会报错,需要覆盖的话,给
ln加-f参数,即ln -sf "$file" "/root/Desktop/match/jars/$linkname" - 执行前确保你对目标目录(
/root/Desktop/match/jars/)有写入权限
内容的提问来源于stack exchange,提问作者ahmed
相关产品推荐
相关产品推荐

