文件名连续编号(多个命令继续编号)

文件名连续编号(多个命令继续编号)

我正在将多个音乐视频编码为 HEVC 并使用 备份它们1fichierrclone由于这些文件很小(平均 100 MB),当我批量上传时会收到 错误Flood detected: IP Locked,因此 1fichier我将 10 个文件压缩并上传。这样以后下载会更方便、更容易。

我为这段代码取了一个别名,并偶尔运行它:

cd ~/ffmpeg && mkdir music && ls -Q hevc | head -10 | xargs -i mv hevc/{} music/ \
&& mv music ~/downloads/music && cd ~/downloads && du -sh music && \
zip -r music.zip music && rm -r music && \
rclone move ~/downloads/ 1fichier:musiczip -P --transfers=1

问题是我必须手动按1fichier顺序重命名文件。有没有办法music001.zip在上传 zip 文件之前按顺序对它们进行编号?

我正在考虑这样的事情:

mv music.zip music$NUM.zip

请注意,此命令将在不同时间运行,而不是连续运行。

更新:如果有人感兴趣的话,我简化了上述命令:

ls | grep .mkv | head -10 | zip -@ -m -v music.zip

这将压缩当前目录中的前 10 个 mkv 文件。

cd ~/ffmpeg && mkdir music && ls -Q hevc | head -10 | xargs -i mv hevc/{} music/ \
    && mv music ~/downloads/music && cd ~/downloads && du -sh music && \
    zip -r music.zip music && rm -r music

这是先前的命令。

更新 - 2:1fichier Flood detected: IP Locked可以通过逐个传输文件来避免开启。使用命令rclone moveappend时--transfers=1(默认为 3)

答案1

将最后使用的数字保存在文件中,例如lastnum,然后每次读取它并增加它。在 bash 中:

[ ! -f lastnum ] && echo 0 >lastnum
num=$(<lastnum)
let num=num+1
echo $num >lastnum
num=$(printf "%03d" $num)
echo "... using music$num.zip"

答案2

您可以将别名中的命令更改为:

cd ~/ffmpeg && mkdir music && ls -Q hevc | head -10 | xargs -i mv hevc/{} music/ && mv music ~/downloads/music && cd ~/downloads && du -sh music && zip -r music"$(date +%s)".zip music && rm -r music && rclone move ~/downloads/ 1fichier:musiczip -P --transfers=1

zip -r music"$(date +%s)".zip music将添加自纪元以来的秒数到创建的 ZIP 档案的名称,它看起来将类似于以下内容:

music1611590629.zip

每次运行该命令时,它都会有一个唯一的名称。

相关内容