修改命令以删除文件名末尾的数字

修改命令以删除文件名末尾的数字

全部,

我一直在弄乱 for 命令来批量删除文件名中的模式。

文件名示例:

:Common:CBE.key_44643_1

我可以使用以下命令删除 :Common: 部分。

for f in *; do mv "$f" "${f#:Common:}";done

对于我的一生,我无法获得删除 .key 右侧所有内容的命令。以下是我的尝试

for f in *; do mv "$f" "$(?<=crt)(?s)(.*$);done

命令运行但文件没有更改。我在 mac 上运行这个。

答案1

使用 shell 执行此操作的一种方法:

for f in *; do
    mv -- "$f" "${f%.key*}.key"
done

答案2

假设文件名不包含换行符或反斜杠:

for f in ./*
do
  mv "$f" "$(echo "$f" | sed 's/key_.*$/key/')
done

相关内容