全部,
我一直在弄乱 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