Копировать несколько файлов из разных каталогов при переименовании?

У меня есть несколько файлов, которые нужно скопировать из разных каталогов, но у каждого файла одно и то же имя, поэтому мне нужно скопировать их в один каталог и переименовать каждый по очереди как «expect1, expect2, expect3» и т. Д. Код, который я пробовал до сих пор, -

     let i=1; for file in delay* ; do (
     cd $file
     cp expectation_file ~/target_dir
     cd ~/target_dir/
     mv expectation_file expect{i}
     ((i++)) );
     done

Но это просто заставляет каждый файл с именем "expect1". Может кто-нибудь поможет? Я думаю, что счетная петля неправильная, но не могу понять. Спасибо!

РЕДАКТИРОВАТЬ: Там была ошибка в коде. Если бы 1 = 1 вместо i = 1, а затем ++ i, а не i ++.

0
28.03.2017, 18:33
1 ответ

Это может быть более универсально.

#!/bin/bash
i=0
source_files=$(find /tmp -name "*.zip")
target_dir=~/temp1/
for source in ${source_files}; do
  ((i++))
  mv ${source} ${target_dir}/$(basename ${source})${i}
done

Выражение source_files может иметь вид $(ls *.zip), в этом примере все zip-файлы находятся в каталоге /tmp/.

0
28.01.2020, 04:47

Теги

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