Как добавить нулевую прокладку к именам файлов, в которых уже есть цифры? [duplicate]

Я использовал Sound Juicer для копирования аудио CD для книги по изучению языка, чтобы я мог слушать их на своем Android. Однако Sound Juicer, похоже, имеет возможность нумеровать файлы только без ведущих нулей. Например, так:

track_1.mp3
track_10.mp3
track_11.mp3

Это приводит к некоторой путанице в упорядочивании файлов на моем музыкальном плеере. Поэтому я хочу добавить несколько нулей к имени, чтобы они были упорядочены правильно, как здесь:

track_01.mp3
track_02.mp3
track_03.mp3

Как мне этого добиться? Я пробовал использовать GPRename, но хотя у него есть возможность добавлять числа, у него, похоже, нет опций для добавления ведущих нулей.

Есть ли лучшая программа или что-то, что я могу сделать в командной строке?

9
задан 28 July 2014 в 07:02

5 ответов

Я предполагаю, что вам просто нужно переименовать файлы 1-9, так как это те, которые нуждаются в заполнении. Есть несколько способов сделать это.

Вы можете выполнить следующую команду:

for n in $(seq 9); do mv track_$n.mp3 track_0$n.mp3; done;

Это переименует дорожки track_1.mp3 - track_9.mp3 в track_01. mp3 - track_09.mp3 .


Чтобы разбить его, это выглядит так:

for n in $(seq 9)
do
    mv track_$n.mp3 track_0$n.mp3
done
  • для n в $ (seq 9) : для каждого числа на выходе команда seq 9 , которая представляет собой список только чисел от 1 до 9, do ,
  • mv track_ $ n.mp3 track_0 $ n.mp3 : это это фактическая команда, которая переименовывает файлы. Он заменяет значение n , повторяя все числа. Таким образом, выполняется mv track_1.mp3 track_01.mp3 , mv track_2.mp3 track_02.mp3 до последнего номера, равного 9.
10
ответ дан 23 November 2019 в 06:16

В приведенном ниже сценарии переименования файлов указан каталог. Он вычисляет количество необходимых начальных нулей, независимо от количества файлов (если> 100, необходимо больше нулей), и автоматически переименовывает файлы.

Чтобы использовать его,

скопируйте приведенный ниже сценарий в пустой файл, в разделе заголовка задайте каталог источника, префикс (в данном случае «track-») и расширение файлов, которые вы хотите переименовать. Сохраните его как rename.py и запустите с помощью команды:

python3 /path/to/script.py

Сценарий:

#!/usr/bin/env python3

import shutil
import os

sourcedir = "/path/to/sourcedir"
prefix = "track_"
extension = "mp3"

files = [(f, f[f.rfind("."):], f[:f.rfind(".")].replace(prefix, "")) for f in os.listdir(sourcedir) if f.endswith(extension)]
maxlen = len(max([f[2] for f in files], key = len))

for item in files:
    zeros = maxlen - len(item[2])
    shutil.move(sourcedir+"/"+item[0], sourcedir+"/"+prefix+str(zeros*"0"+item[2])+item[1])
4
ответ дан 23 November 2019 в 06:16

Конечно, есть много способов сделать это. Вы можете, например:

  • Разделить части
  • дополнить часть с номером
  • соединить отдельную часть обратно с новым именем

Поместить это в цикл:

#!/bin/bash

item="track_1.mp3"

part1=`echo $item | awk -F_ '{print $1}'`
part2=`echo $item | awk -F_ '{print $2}'`
part2a=`echo $part2 | awk -F. '{print $1}'`
part2b=`echo $part2 | awk -F. '{print $2}'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo $newname

Цикл:

#!/bin/bash

for item in track_1.mp3 track_10.mp3 track_11.mp3
do
    part1=`echo $item | awk -F_ '{print $1}'`
    part2=`echo $item | awk -F_ '{print $2}'`
    part2a=`echo $part2 | awk -F. '{print $1}'`
    part2b=`echo $part2 | awk -F. '{print $2}'`
    number=`printf "%02d" $part2a`
    seperator="_"
    newname="$part1$seperator$number.$part2b"
    echo "Renaming $item -> $newname"
    mv $item $newname
done
enter code here
1
ответ дан 23 November 2019 в 06:16

GPRename автоматически вставит ноль, если вы переименовываете 10 или более файлов (два, если вы переименовываете 100 или более, и т. Д.) При использовании числовой функции. Просто убедитесь, что Автозаполнение нуля включено в меню Параметры .

1
ответ дан 23 November 2019 в 06:16

Создайте сценарий, который будет работать как команда .

Сделайте этот файл в каталоге, в котором вы отслеживаете файл.

  • Сделать вот так

     touch change
    chmod + x изменить
    изменение vim
     
  • В нем напишите

     #! / Bin / bash
    п = 0
    для м в {00 .. 99}
    делать
      mv track_ $ n.mp3 track_ $ m
      п = `expr $ n + 1`
    сделанный
     
1
ответ дан 23 November 2019 в 06:16

Другие вопросы по тегам:

Похожие вопросы: