重命名时从不同目录复制多个文件?

重命名时从不同目录复制多个文件?

我有几个文件要从不同的目录复制,但每个文件都有相同的名称,所以我需要将它们复制到一个目录,然后将每个文件依次重命名为“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++。

答案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) 的任何内容,此示例查找 /tmp/ 下的所有 zip 文件。

相关内容