在Linux中,如何复制所有不以给定string开头的文件?

我试着用下面的命令:

cp src_folder/[!String]* dest_folder 

但是,这个命令将复制所有不以字符'S','t','r','i','n','g'开始的文件,而不是复制不需要的文件从“String”开始。

Konrad答案的一个变体,使用cp选项-t来指定目标目录简化了最后一个命令。 它创建一个单独的cp进程来复制所有的文件。

 ls src_folder | grep -v '^String' | xargs cp -t dest_folder 
  • 列出src_folder中的所有文件
  • 过滤掉所有以String开头的内容
  • 将所有剩余的文件复制到dest_dir

在bash中:

 shopt -s extglob cp src_folder/!(String*) dest_folder 
 ls src_folder | grep -v '^String' | xargs -J % -n1 cp % dest_folder 

这会

  • 列出src_folder中的所有文件
  • 过滤掉所有以String开头的内容(剩下的部分保留)
  • 调用cp命令
    • 一次对于每个文件( -n1表示分别为每个文件调用cp
    • 使用% dest_folder作为参数,其中%由实际文件名替换。
 cp src_folder/!(String*) dest_folder 

试试〜Chris