使用新文件名移动文件

时间:2015-08-18 13:01:13

标签: bash perl

我有文件

/folder/file1.mp4
/folder/file2.wmv
/folder/file3.mov

我需要将它们移动到具有新文件名的新文件夹,该文件夹是从12个符号随机生成的。

/new-folder/345457567452.mp4
/new-folder/890897687685.wmv
/new-folder/235344783456.mov

我该怎么做?

问题是:我不知道原始文件的扩展,我只需要重命名ile的名称并保存扩展名。

1 个答案:

答案 0 :(得分:1)

您可以使用参数扩展来提取文件扩展名(${file##*.}删除最后一个点的所有内容。)

$RANDOM变量可用于创建随机名称。

for file in folder/file* ; do
    newname=''
    for i in {1..12} ; do
        newname+=$(( RANDOM % 9 ))
    done

    newname=new_folder/$newname."${file##*.}"
    if [[ -f $newname ]] ; then
        echo "Target $newname already exists. $file not moved." >&2
    else
        mv "$file" "$newname"
    fi
done