Command-Line

將具有特定名稱的文件複製到另一個文件夾

  • July 7, 2020

我有一個包含很多文件的文件夾。我想複製以這些名稱開頭的所有文件(以空格分隔):

abc abd aer ab-x ate

到另一個文件夾。我怎樣才能做到這一點?

使用csh, tcsh, ksh93, bash, fishor zsh -o cshnullglob,您可以使用大括號擴展萬用字元來做到這一點(--這些文件名不需要,但我認為它們只是範例):

cp -- {abc,abd,aer,ab-x,ate}* dest/

如果您不想使用大括號擴展,則可以使用 for 循環(此處為 POSIX/Bourne 樣式語法):

for include in abc abd aer ab-x ate; do
   cp -- "$include"* dest/
done

如果您有大量文件,由於cp每個包含呼叫一次,這可能會很慢。另一種方法是填充一個數組,然後從那裡開始(這裡ksh93zsh或最近的bash語法):

files=()
includes=(abc abd aer ab-x ate)

for include in "${includes[@]}"; do
   files+=( "$include"* )
done

cp -- "${files[@]}" dest/        

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