首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件扩展名之前添加随机文本

在文件扩展名之前添加随机文本
EN

Stack Overflow用户
提问于 2013-07-15 18:30:00
回答 3查看 215关注 0票数 0

我有一根绳子:

代码语言:javascript
复制
2013/07./penguin pingouin pinguino 365.png

我想要将...that重命名为

代码语言:javascript
复制
2013/07./penguin pingouin pinguino 365${RANDOM}.png

我认为sed可能能够从字符串中的最后一个字符向内插入随机位4空格。我不知道怎么做(如果这是可能的,或者是最好的方法)。

背景:--这是图片排序脚本的一部分,当它找到副本时,我会尝试合并重命名功能。扩展并不总是.png,但它将始终是三个字符。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-15 20:45:39

试一试如下:

代码语言:javascript
复制
for file in *; do 
  ext="${i##*.}"; 
  mv "$file" "${file%.*}${random}.${ext}"; 
done

代码语言:javascript
复制
$ random="my random stuff" # 
$ touch "penguin pingouin pinguino 365.png" 
$ ls
penguin pingouin pinguino 365.png
$ for file in *; do 
    ext="${i##*.}"; mv "$file" "${file%.*}${random}.${ext}"; 
  done
$ ls
penguin pingouin pinguino 365my random stuff.png
票数 0
EN

Stack Overflow用户

发布于 2013-07-15 19:18:48

下面是将文件备份到目录中的另一种方法:

代码语言:javascript
复制
moveto () { 
    file=$1
    if [[ -f "$file" ]]; then 
        echo "no such file: $file"
        return 1
    fi
    dir=$2;
    if [[ -d "$dir" ]]; then
        echo "no such directory: $dir"
        return 1
    fi
    target="$dir/$(basename "$file")"
    if [[ -f "$target" ]]; then
        base=${target%.???}
        ext=${target##*.}
        prev=("$base"_*)
        for ((i=${#prev[@]}-1; i>=0; i--)); do
            if [[ ${prev[i]} =~ "$base"_0*([0-9]+) ]]; then
                n=${BASH_REMATCH[1]}
                mv "${prev[i]}" "$(printf "%s_%03d.%s" "$base" $((n+1)) "$ext")"
            fi
        done
        mv "$target" "$base"_001.$ext
    fi
    mv "$file" "$target"
}

当您第一次将文件“移动”到dir (moveto file.txt backups)时,您将得到"backups/file.txt“。

第二次,您将拥有"backups/file.txt“和"backups/file_001.txt”。

第三次,您将拥有"backups/file.txt“、"backups/file_001.txt”和"backups/file_002.txt“。

诸若此类。

票数 0
EN

Stack Overflow用户

发布于 2013-07-15 19:30:27

下面的代码段应该在sed sed -r 's/(.[a-zA-Z]+$)/$RANDOM\1'中执行您所需的操作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17661283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档