给定的
dirs="Larry Curly Moe"目标是扫描每个目录并截断所有文件名,如下所示:
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什么是有效和有力的战略?
发布于 2018-03-19 21:39:42
这可能对你有用:
从您的一组示例文件开始:
$ 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-*任何文件名的末尾:
$ cat ex.sh
#!/bin/bash
for i in $(find . -type f -name '*-gcc-*'); do
mv "$i" "$(echo "$i" | sed -e 's/-gcc-.*$//')"
done运行脚本:
$ bash ex.sh请注意,这些文件不再包含-gcc-*后缀:
$ find . -type f
./intel-mkl/2018.1.163
./superlu-dist/5.2.2
./exuberant-ctags/5.8发布于 2018-03-19 21:53:06
find + bash解决方案:
find . -type f -name "*-gcc-[0-9]*" -exec bash -c 'fn=${1%-gcc-*}; mv "$1" "$fn"' _ {} \;https://unix.stackexchange.com/questions/432185
复制相似问题