我的文件有这个结构:
mynewfile-runtime-tested-1102-19.4-alpha.zip
mysdk-sdk-tested-1102-19.4-alpha.zip
sources-tested-1102-19.4-alpha.zip
我正在寻找一种方法,如何动态检测并删除 tested-1102-19.4-alpha 的后缀,并使用新名称复制文件,使其看起来像:
mynewfile-runtime.zip
mysdk-sdk.zip
sources.zip
后缀应该由分隔符动态检测(' - '),我的另一个文件块后缀如 nottested-404-11.2.34-beta 和另一个一个是 final-01-1-release 。唯一保持不变的是' - '
的分隔符答案 0 :(得分:3)
for file in *.zip; do
mv "$file" "${file%-*-*-*-*.zip}.zip"
done
这是完全可移植的POSIX shell,没有ford或sed或其他程序。
${file%pattern}
位表示删除最短匹配字符串。
您还可以分别使用%%
或左与#
和##
删除最长匹配。
答案 1 :(得分:1)
要仅移动与模式匹配的文件,您可以执行此操作:
#!/bin/sh
suffix='-*-*-*-*.zip'
for file in *$suffix
do
trimmed=${file%$suffix}
echo mv "$file" "$trimmed".zip
done
如果对结果有信心,请删除echo
。