我有类似的文件:alien-skull-2224154.jpg snow-birds-red-arrows-thunderbirds-blue-angels-43264.jpg dead-space-album-1053.jpg
如何在bash中删除bash之前的"ID"字符串id始终用前一个单词" - "分隔谢谢.
这是使用bash参数替换的一种方法:
for i in *.jpg; do mv "$i" "${i%-*}.jpg"; done
Run Code Online (Sandbox Code Playgroud)
或者对于更一般的情况(即,如果您有其他文件扩展名),请尝试:
for i in *.*; do mv "$i" "${i%-*}.${i##*.}"; done
Run Code Online (Sandbox Code Playgroud)
结果:
alien-skull.jpg
dead-space-album.jpg
snow-birds-red-arrows-thunderbirds-blue-angels.jpg
Run Code Online (Sandbox Code Playgroud)
根据下面的评论,尝试这个bash脚本:
declare -A array
for i in *.*; do
j="${i%-*}.${i##*.}"
# k="$j"
# k="${i%-*}-0.${i##*.}"
for x in "${!array[@]}"; do
if [[ "$j" == "$x" ]]; then
k="${i%-*}-${array[$j]}.${i##*.}"
fi
done
(( array["$j"]++ ))
mv "$i" "$k"
done
Run Code Online (Sandbox Code Playgroud)
请注意,您需要取消注释值,k具体取决于您希望如何格式化文件名.如果取消注释第一行,则只会增加重复的基本名称:
dead-space-album.jpg
dead-space-album-1.jpg
dead-space-album-2.jpg
dead-space-album-3.jpg
Run Code Online (Sandbox Code Playgroud)
如果取消注释第二行,您将获得以下内容:
alien-skull-0.jpg
alien-skull-1.jpg
alien-skull-2.jpg
alien-skull-3.jpg
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6918 次 |
| 最近记录: |