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