Bash
將多個文件並行複製到一個目錄
我正在使用以下腳本將多個文件複製到一個文件夾中:
{ echo $BASE1; echo $BASE2; echo $BASE3; } | parallel cp -a {} $DEST
有沒有辦法只使用一個帶有大括號擴展的 echo $BASE ?
我的意思是這樣的:
{ echo $BASE{1..3} } | parallel cp -a {} $DEST
你可以使用一個數組:
BASES[0]=... BASES[1]=... BASES[2]=... # or BASES+=(...) # or BASES=(foo bar baz) echo "${BASES[@]}" | parallel cp -a {} $DEST
為了使其更安全(特別是變數中的空格和換行符),這樣的事情應該更可靠地工作:
printf "%s\0" "${BASES[@]}" | parallel -0 cp -a {} "$DEST"
注意:數組不在 POSIX 中,但這適用於目前版本的 bash 和 ksh。
您可以使用
printf
代替echo
, 來獲取您需要的換行符:env printf "%s\n" $BASE{1..3} | parallel cp -a {} $DEST