2

У меня есть папка (яблоко), содержащая файлы

doc001.jpg
doc002.jpg
...
doc010.jpg, 

Другая папка (банан) также содержит файлы

doc001.jpg   
...
doc150.jpg  

Как я могу вставить содержимое яблока в банан в середине, переименовывая их? Чтобы в банановой папке были свои существующие файлы вплоть до doc050.jpg тогда

apple/doc001.jpg

становится

banana/doc051.jpg 

и далее, и предыдущий banana/doc051.jpg через banana/doc150.jpg переименовывается в banana/doc060.jpg через banana/doc160.jpg?

1 ответ1

2

Это не самое элегантное решение, но его легко понять и оно должно работать:

  1. Сделайте новую банановую папку

    mkdir banana.new
    
  2. Скопируйте первые 50 файлов (это немного сложнее, чем нужно из-за начальных 0 с):

    for i in {1..9}; do cp banana/doc00$i.jpg banana.new/; done
    for i in {10..50}; do cp banana/doc0$i.jpg banana.new/; done
    
  3. Получить файлы Apple и переименовать их

    i=51; find apple/ -type f | sort | \
      while read n; do cp $n banana.new/doc0$i.jpg; let i++; done 
    
  4. Получить остальные файлы банана и переименовать их

    for i in {51..89}; do \
      let n=$i+10; cp banana/doc0$i.jpg banana.new/doc0$n.jpg; done
    for i in {90..99}; do \
     let n=$i+10; echo "cp banana/doc0$i.jpg banana.new/doc$n.jpg"; done
    for i in {100..150}; do \
     let n=$i+10; cp banana/doc$i.jpg banana.new/doc$n.jpg; done
    

На этом этапе banana.new должен быть именно таким, каким вы хотите. Убедитесь, что это так, а затем переименуйте его в banana .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .