добавление отступов к номерам в имени файла [dубликат]

Если кто-то использует прокси-сервер, для которого требуется аутентификация:

sudo http_proxy=http://username:password@proxyhost:proxy_port dropbox start -i

работал для меня!

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

10 ответов

Я предполагаю, что вам просто нужно переименовать файлы 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 for n in $(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.
8
ответ дан 17 July 2018 в 16:36

Я предполагаю, что вам просто нужно переименовать файлы 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 for n in $(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.
8
ответ дан 23 July 2018 в 17:28

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

1
ответ дан 17 July 2018 в 16:36

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

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

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

#!/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
ответ дан 17 July 2018 в 16:36

Сценарий ниже 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
ответ дан 17 July 2018 в 16:36

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

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

Сделайте это 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
ответ дан 17 July 2018 в 16:36

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

1
ответ дан 23 July 2018 в 17:28
  • 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
ответ дан 23 July 2018 в 17:28
  • 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

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

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

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

#!/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 July 2018 в 17:28

Сценарий ниже 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
ответ дан 23 July 2018 в 17:28

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

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