Переименование группы файлов, но только часть заголовка

Мне нужно переименовать группу файлов (около 167 КБ), и только часть заголовка в каждом файле. From: Aaaa.bb - 2 tag tag_tag 9tag Aaaa.bb - 125 tag_tag 9tag Aaaa.bb - 3567 tag 9tag To: Aaaa.bb - 000002 tag tag_tag 9tag Aaaa.bb - 000125 tag_tag 9tag Aaaa.bb - 003567 tag 9tag Все находится на внешнем жестком диске. Есть ли какой-либо инструмент или сценарий, который может помочь мне в этой ситуации? Также забыл упомянуть, что я все еще новичок в Ubuntu и всяких хитрых вещах, поэтому я попрошу упростить ответы

0
задан 18 October 2015 в 03:52

4 ответа

Вот мое взятие в нем, используя bash, awk, и mv.

, Если мы смотрим на имя файла с awk точки зрения, имя файла - просто последовательность с отделенными областями пространства, и особенно интересный область 3$, который должен быть дополнен нолями. Рев сценария делает точно это. Удостоверьтесь, что Вы помещаете сценарий и управляете им в том же справочнике как файлы, которые Вы хотите переименовать. Кроме того, удостоверьтесь, что это выполнимо с chmod 755 renamerScript.sh

Образец

testdir:$ ls
Aaaa.bb - 125 tag tag_tag 9tag  Aaaa.bb - 2 tag tag_tag 9tag  Aaaa.bb - 4207 tag tag_tag 9tag  BACKUP/  renamerScript.sh*

testdir:$ ./renamerScript.sh                                                                                                                          
mkdir: cannot create directory ‘BACKUP’: File exists
cp: omitting directory ‘BACKUP’
renaming Aaaa.bb - 125 tag tag_tag 9tag to Aaaa.bb - 000125 tag tag_tag 9tag 
renaming Aaaa.bb - 2 tag tag_tag 9tag to Aaaa.bb - 000002 tag tag_tag 9tag 
renaming Aaaa.bb - 4207 tag tag_tag 9tag to Aaaa.bb - 004207 tag tag_tag 9tag 

testdir:$ ls
Aaaa.bb - 000002 tag tag_tag 9tag  Aaaa.bb - 000125 tag tag_tag 9tag  Aaaa.bb - 004207 tag tag_tag 9tag  BACKUP/  renamerScript.sh*

Сценарий

#!/bin/bash
# renamerScript.sh
# Author: Serg Kolo
# Date: Oct 17, 2015
# Purpose : renaming specific files
# Written for: http://askubuntu.com/q/686794/295286

# Make sure you have backup of the files !!!
# comment/uncomment if you do want to do a backup

mkdir BACKUP
cp -t BACKUP *

# This is where the magic happens:
# If we look at filenames from the awk point of view
# "Aaaa.bb - 2 tag tag_tag 9tag" are all really 
# space-separated fields. Field #3 is the one we need to edit.
# What we can do is pad it with zeros and then chop off 6 
# characters from the end, and store that as new filename
# The rest is just doing mv command from old filename to new
# And also making sure we're operating on files , not directories
# and not renaming the script file,too

for FILENAME in * ; 
do  
 if [ -f "$FILENAME" -a "$FILENAME" != "renamerScript.sh" ]; then

   OLDFILENAME="$FILENAME"
   NEWFILENAME=$(echo "$FILENAME" | awk '{$3="00000"$3; len=(length($3)-5); $3=(substr($3,len)); print  }')
   printf "renaming $OLDFILENAME to $NEWFILENAME \n"
   mv "$OLDFILENAME" "$NEWFILENAME"
 fi
done 
1
ответ дан 18 October 2015 в 13:52
  • 1
    Спасибо @Hochopepa за ответ. Я знаю it' s один синтаксис комментария строки, но it' s странный это думает it' s C файл. У меня есть много файлов как этот. Я запускаю весь свой текстовый файл со что, потому что он показывает то, что является моим файлом о. – ICE 6 January 2017 в 08:21

Попробуйте pyRenamer оптовый файл renamer, которые переименовывают файлы, используя образцы, замены, вставляют или удаляют текст или даже переименовывают файлы вручную.

у Этого есть окно графический интерфейса пользователя с этими особенностями:

  • Образцы, чтобы переименовать файлы. Поиск & замените, чтобы переименовать файлы. Вставьте и удалите характер где угодно от имени файла. Капитализация (делают имя файла верхнего регистра). Общие замены. Вручную переименуйте отобранные файлы. Переименуйте изображения, используя их метаданные. Переименуйте музыку, используя ее метаданные. Источник

Установите: sudo apt-get install pyrenamer

0
ответ дан 18 October 2015 в 13:52
  • 1
    Нет это shouldn' t gedbi-core doesn' t существуют. It' s gdebi-core. – TheWanderer 6 January 2017 в 14:27

Я был бы reccomend Python и использующий regex. Вот пример сценария, который я сделал, который может cnahge все файлы в папке и подпапках.

directoryChosen = (sys.argv[1])

print directoryChosen + "   thi is inside dollartohash"
if os.path.isdir(directoryChosen):
    for n in os.listdir(directoryChosen):
        if not n.startswith('.'):

            newname =  n.replace('$', '#')
            print newname
            if newname != n:
                path = os.path.join(directoryChosen, n)
                print path + "    this is path"
                target = os.path.join(directoryChosen, newname)
                print target + "   this is target"
                os.rename(path, target)

    newdir = directoryChosen.replace('$', '#')
    print newdir
    if directoryChosen != newdir :
         os.rename(directoryChosen, newdir)

Поскольку Вы видите, что это берет каталог в качестве аргумента и изменяет символ на другой символ. Я уверен, что можно изменить часть замены.

1
ответ дан 18 October 2015 в 13:52
  • 1
    I' m собирающийся редактировать все мои текстовые файлы и удалять те // из запуска. Это кажется там isn' t другое решение для него. – ICE 6 January 2017 в 12:03

Вы могли использовать находящееся в perl rename команда, чтобы переиздать последовательность цифр после космического пространства дефиса в желаемом формате и полевой ширине, например,

rename -vn -- 's/ - (\d+)/sprintf " - %06d", $1/e' *

(-n средства флага 'никакой op', т.е. это просто сделает пробный прогон, чтобы проверить выражение: удалите его, если/когда Вы уверены, что это работает правильно).

0
ответ дан 18 October 2015 в 13:52

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

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