重命名音乐文件,使其按字母顺序排列在播放列表后面

重命名音乐文件,使其按字母顺序排列在播放列表后面

我有一堆 mp3,我将它们整理成一个派对播放列表。我希望能够轻松地重命名这些文件,以便它们从播放列表中的位置开始:

001.Track.mp3
002.Track.mp3
.
.
.

然后就可以按字母顺序播放了。如果不手动操作,可以实现吗?

答案1

您可以尝试这样的事情:我不确定是否需要更多的东西但这应该可行。

    cat playlist.m3u | I=1 while read file; do
        mv $file $I.$file.mp3;
        I=$I + 1;
    done;

编辑:您可能需要 I=`expr $I + 1'; 而不是 I=$I + 1;

答案2

假设你有一个文件my_playlist.txt,其中包含按你想要播放的顺序排列的曲目,例如,

dancing all night long.mp3
charles trenet - je t'aime mon amour.mp3
mon petit poney - bo.mp3
charlie parker - donna lee.flac

并假设此文件与音乐文件位于同一目录中。如果不是,请相应地指定您的问题。

然后(观察好适用于文件名中包含空格的练习):

#!/bin/bash

pl=my_playlist.txt

# need number of files, to know the number of leading zeros
n=$(wc -l < "$pl")
lz=0
while ((n)); do ((++lz)); ((n/=10)); done

i=1
while read f; do
    [[ -z $f ]] && continue
    if [[ ! -f $f ]]; then
        printf "*** Error, file \`%s' not found.\n" "$f"
        continue
    fi
    printf -v target "%0*d.%s" "$lz" "$i" "$f"
    echo mv -vn -- "$f" "$target"
    ((++i))
done < "$pl"

如果按原样运行,则不会发生重命名,因为echo前面有mv。这只是一个小测试。当您对它感到满意时,删除 ,echo重命名就会发生。该mv命令有两个标志-v-n

  • -v:详细一点(我喜欢知道发生了什么)
  • -n:没有 clobber,以便不会覆盖其他现有文件(更安全)

printf关于命令的说明。它看起来有点丑,但没什么好害怕的。部分%0*d将采用两个参数$lz$i,并将被带有前导零的数字替换$i$lz然后%s将被第三个参数替换,即文件名。所有这些都将放入变量中target,这要归功于选项-v。所以这target将是这样的:

0001.title of the file.mp3

适应并扩展您的需求!


现在让我们假设你已经玩过这个,并且你想撤消重命名......有两种可能性:

  1. 您只有以下形式的文件,XXXX.YYYY其中XXXX是数字,并且您想要从名称中删除数字和句点:

    shopt -s extglob
    for i in +([[:digit:]]).*; do
        target=${i#*.}
        echo mv -nv -- "$i" "$target"
    done
    

    echo当您满意时,即可删除。

  2. 您只想对播放列表中的文件执行此操作my_playlist.txt

    shopt -s extglob
    while read f; do
        a=( +([[:digit:]])."$f" )
        if ((${#a[@]}==0)); then
            printf "*** Error: can't find a match for file \`%s'\n" "$f"
        elif ((${#a[@]}>1)); then
            printf "*** Error: found several matches for file \`%s':\n" "$f"
            printf "    %s\n" "${a[@]}"
        else
            target=${a[0]#*.}
            echo mv -nv -- "$f" "$target"
        fi
    done < my_playlist.txt
    

    和往常一样,echo当您满意时即可删除。

答案3

我使用 Dolphin(Nautilus 的替代品),我需要做的就是选择我想重命名的文件,右键单击选择,然后...

在此处输入图片描述

希望这可以帮助

相关内容