在Shell脚本中将除目录以外的所有文件复制到另一个目录

时间:2018-08-07 23:51:44

标签: shell

我有一个directoryOne文件夹,其中包含几个文件:

solution / directoryOne /

  • 100test.txt
  • 101test.txt
  • 102test.txt
  • 103test.txt
  • 104test.txt

解决方案/目录Two /

我正在尝试使用Shell脚本将除104test.text之外的所有文件从directoryOne复制到directoryTwo。

#!/bin/bash
cp directoryOne/!(104*) solution/directoryTwo/

没有成功。有什么方法可以使用某种表达方式来实现这一目标?

1 个答案:

答案 0 :(得分:1)

尝试一下:

find solution/directoryOne -maxdepth 1 -type f | grep -v 104 | xargs -I _ cp _ solution/directoryTwo

说明:

  • find列出文件的完整路径(带有仅常规文件且不包含目录的选项)
  • grep -v仅返回与正则表达式104匹配的行,但是-v取消匹配,例如“ except”
  • xargs在末尾运行一个将输入固定的命令,但是-I _设置输入的占位符