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

Я бы не стал беспокоиться об этом. Учитывая наблюдаемую скорость синхронизации, я бы не счел, что система хранения Canon Amazon даже почти перегружена.

Если вы обеспокоены тем, что обслуживание остается жизнеспособным, возможно, вы захотите рассмотреть возможность обновления плана хранения, чтобы получить больше преимуществ и поддержки инфраструктуры.

1
задан 28 July 2014 в 19:02

4 ответа

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

Использовать его

copy сценарий ниже в пустой файл, в headection, установите sourcedirectory, префикс («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
ответ дан 24 May 2018 в 05:13

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

Отделить запятую часть, которая имеет число, соединить отдельную часть с новым именем

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

[ f1]

Цикл:

#!/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
ответ дан 24 May 2018 в 05:13

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

1
ответ дан 24 May 2018 в 05:13
  • 1
    Это полезно знать. Хотя, GPRename, похоже, не признает существующие числа, поэтому, похоже, не фиксирует эту конкретную ситуацию. – Questioner 28 July 2014 в 14:10

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

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

Сделайте это
touch change
chmod +x change
vim change
. В нем напишите
#!/bin/bash
n=0
for m in {00 .. 99}
do
   mv track_$n.mp3 track_$m
   n=`expr $n + 1``
done
1
ответ дан 24 May 2018 в 05:13
  • 1
    Казалось бы, это перемещение 0 в 00, затем 1 - 00, затем 2 - 00 и т. Д. Я не думаю, что это правильно. – Boris the Spider 28 July 2014 в 13:24
  • 2
    вы можете проверить обновленный ответ. – Dishank Jindal 28 July 2014 в 13:43
  • 3
    Хорошо, теперь он должен дать правильный результат. Но должно быть очевидно, что вам не нужно перемещать ничего выше, чем 9, поскольку у него уже будет две цифры. Также должно быть очевидно, что вам нужно только переместить x в 0x, вместо того, чтобы иметь два итератора. Наконец, у вас отсутствует .mp3. Я думаю, что этот ответ далек от идеала. – Boris the Spider 28 July 2014 в 13:49
  • 4
    программа проста и будет заботиться обо всех файлах. И да, вы тоже правы. я просто пытаюсь помочь. – Dishank Jindal 28 July 2014 в 13:52

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

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