2014-01-16 2 views
1

У меня есть две папки, папкаA с 50 файлами и папкой B, где можно сказать N файлов, что мне нужно сделать: Переименуйте все файлы из обеих папок с общим счетчиком, каждый раз, когда я переименовываю файл из папки А, скажем, 1, 3 файла из папки В получит следующий номер счетчика: 2, 3 и 4, а затем вернитесь в папку А и переименуйте следующий файл с 5, пока в папке не останется файлов.Переименование файлов последовательно в двух отдельных папках

folderA 1 5 9 13 17

folderB 2 3 4 6 7 8 10 11 12 14 15 16 18 19 20

Любые мысли?

+1

Это требует небольшого программирования. Знаете ли вы языки программирования? –

+0

Я не программист, но немного кодировал C и некоторые скрипты Linux, но ничего не связал с управлением файлами в разных папках. – darko

+0

Это решение могло быть сделано на десятках языков, поэтому, если вы публикуете такой вопрос, лучше всего дать людям представление о том, какой язык вы хотите использовать. Идея этого сайта - помочь вам учиться, поэтому должна быть использована технология, с которой вы уже знакомы. –

ответ

0

Я думаю, что этот фрагмент кода сделает трюк. Он основан на модуляции для увеличения номеров папок и специального условия остановки, если количество файлов в папке B более чем в 3 раза превышает количество файлов в папке. картины

  • FolderA составляет 1, 5, 9 ..., который подобен инициализации я до 1, и увеличивается на 4 для каждой итерации.
  • FolderB-х Инкрементирование имя, 1, если я по модулю 4 не 0 еще она увеличивается на 2.

Если копируется вставили в файл (скажем renaming.sh) и при условии надлежащего исполнения разрешение ($> CHMOD + х renaming.sh), он может быть использован как и из командной строки:

$> ./renaming.sh folderA folderB 

Вот код поместить в файл:

#!/bin/bash 


i=1 
ACOUNT=0 
for FILEA in $1/*; do 
     mv "${FILEA}" "$1/${i}" 
     ((i+=4)) 
     ((ACOUNT++)) 
done 

i=1 
BCOUNT=0 
for FILEB in $2/*; do 
     if ((i%4)) ; then 
       ((i++)) 
     else 
       ((i+=2)) 
     fi 
     if ((BCOUNT>= 3* ACOUNT)); then break; fi 
     ((BCOUNT++)) 

     mv "${FILEB}" "$2/${i}" 
done 
+0

Спасибо, мистер, я попробую. – darko

+0

@ darko Нет проблем. Пожалуйста, отметьте свой вопрос как разрешенный, если он решает вашу проблему: это облегчает для других поиск хороших ответов. И скажите, если это не так, попробуем разобраться. – Quirysse

Смежные вопросы