Bash脚本可复制文件夹和没有一个文件的内容

时间:2018-08-14 12:29:45

标签: linux bash glob cp extglob

我正在尝试在没有一个文件的情况下复制目录内容。我遇到的问题是文件嵌套了几个文件夹,而extglob运算符无法匹配。

假定以下文件夹结构:

enter image description here

我想将源文件中的所有内容(包括子文件夹和文件)复制到dest smu.txt中。

我本以为可以做到以下几点:

#!/bin/bash
shopt -s extglob

cp -vr source/!(smu.txt) dest/

但它仍会复制smu.txt。

我也尝试了以下失败的尝试:

#!/bin/bash
shopt -s extglob
shopt -s globstar

cp -vr source/!(**/smu.txt) dest/

如果smu.txt直接位于../source下,它会成功忽略它,但是如何获取它来忽略子目录中的文件?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用find? 也许这可行:

$ find -name "source/*!(smu.txt)" -exec cp -vr {} dest/\;