首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过删除编译器标记重命名文件

通过删除编译器标记重命名文件
EN

Unix & Linux用户
提问于 2018-03-19 21:32:42
回答 2查看 38关注 0票数 0

给定的

  1. 目录列表,例如dirs="Larry Curly Moe"
  2. 编译器供应商,例如-gcc-M.N.0

目标是扫描每个目录并截断所有文件名,如下所示:

代码语言:javascript
复制
intel-mkl/2018.1.163-gcc-7.1.0             -> intel-mkl/2018.1.163
exuberant-ctags/5.8-gcc-7.1.0              -> exuberant-ctags/5.8
superlu-dist/5.2.2-gcc-7.2.0-openmpi@3.0.0 -> superlu-dist/5.2.2

什么是有效和有力的战略?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-03-19 21:39:42

这可能对你有用:

从您的一组示例文件开始:

代码语言:javascript
复制
$ find . -type f -name '*-gcc-*'
./intel-mkl/2018.1.163-gcc-7.1.0
./superlu-dist/5.2.2-gcc-7.2.0-openmpi@3.0.0
./exuberant-ctags/5.8-gcc-7.1.0

下面是一个需要删掉的脚本-gcc-*任何文件名的末尾:

代码语言:javascript
复制
$ cat ex.sh
#!/bin/bash
for i in $(find . -type f -name '*-gcc-*'); do
    mv "$i" "$(echo "$i" | sed -e 's/-gcc-.*$//')"
done

运行脚本:

代码语言:javascript
复制
$ bash ex.sh

请注意,这些文件不再包含-gcc-*后缀:

代码语言:javascript
复制
$ find . -type f
./intel-mkl/2018.1.163
./superlu-dist/5.2.2
./exuberant-ctags/5.8
票数 1
EN

Unix & Linux用户

发布于 2018-03-19 21:53:06

find + bash解决方案:

代码语言:javascript
复制
find . -type f -name "*-gcc-[0-9]*" -exec bash -c 'fn=${1%-gcc-*}; mv "$1" "$fn"' _ {} \;
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/432185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档