Bash

將多個文件並行複製到一個目錄

  • September 28, 2017

我正在使用以下腳本將多個文件複製到一個文件夾中:

{ 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

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