Rename

重命名時從不同目錄複製多個文件?

  • March 28, 2017

我有幾個文件要從不同的目錄複製,但每個文件都有相同的名稱,所以我需要將它們複製到一個目錄,然後依次重命名為“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++。

這可能更通用。

#!/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 文件。

引用自:https://unix.stackexchange.com/questions/354165