如何使用Unix / Linux命令行复制这个文件?

我有这样的文件夹结构:

MAT11NA_09_XX_XX_XXX MAT11NA_09_XX_XX_XXXL MAT11NA_11_XX_XX_XXX MAT11NA_11_XX_XX_XXXL MAT11NA_10_XX_XX_XXX MAT11NA_10_XX_XX_XXXL 

我想从这个服务器复制到另一个文件夹MAT11NA_09_XX_XX_XXX ,但不是MAT11NA_09_XX_XX_XXX L。 当我完成这个我想复制MAT11NA_09_XX_XX_XXX L,但不是MAT11NA_09_XX_XX_XXX 。 这部分MAT11NA_09_不会改变,最后的L也不会改变。

其余的文件夹相同…

我如何在Unix / Linux命令行中执行此操作?

谢谢。

用“L”

 cp -r *L destination 

没有“L”

 cp -r *[^L] desyination 

我知道这是愚蠢的,但至less它是直截了当的。

这将复制以L结尾的所有文件/目录:

 cp `ls | grep -E 'L$'` DEST 

这将复制所有以L结尾的文件/目录:

 cp `ls | grep -vE 'L$'` DEST 

将DESTreplace为您的目的地。

对于那些你想要L的人来说,只需要:

 scp -r MAT*L destserver:/whatever/ 

要做一个没有 L的人,你想用bash扩展Globs:

 shopt -s extglob scp -r ./!(MAT*L) destever:/whatever/ 

我没有用scp来testing这个,但是这大致就是这样做的。 你也可以考虑使用find命令(对于不是L的)。

 find . ! -iname 'MAT*L' ! -iname '.*' -print0 | xargs -0 tar zcf foo.tar.gz 

然后只复制tar文件。

好吧,我已经尝试了所有这些。

scp -r MAT*L destserver:/whatever/ ” – 这个看起来像是在工作。

 shopt extglob scp -r ./!(MAT*L) destever:/whatever/ 

对于这个我跑了命令“ shopt extglob ”,然后做了副本。 但是,我得到这个错误“ -bash: !: event not found ”…所以,它不工作。

我也尝试了第一个答案…文件夹结构有点像这样:

 folder1 MAT11NA_09_XX_XX_XXX MAT11NA_09_XX_XX_XXXL MAT11NA_11_XX_XX_XXX MAT11NA_11_XX_XX_XXXL MAT11NA_10_XX_XX_XXX MAT11NA_10_XX_XX_XXXL 

我想把MAT11NA_09_XX_XX_XXX文件夹放到另一台服务器的文件夹中。

然后我想把MAT11NA_09_XX_XX_XXXL文件夹放在另一台服务器上的另一个文件夹中。

然后…我想把MAT11NA_11_XX_XX_XXX文件夹放在另一个服务器上的一个文件夹(与我放置MAT11NA_09_XX_XX_XXX的文件夹不同)。

对于MAT11NA_11_XX_XX_XXXL …也是一样的

我不想将所有L文件夹放在另一个服务器的一个文件夹中,而且我也不想将所有非L文件夹放在另一个服务器的另一个文件夹中。

希望你明白这一次,对不起。 谢谢。

UPDATE

好的,在最后一个答案后,我正在使用这些,似乎他们正在工作:

 scp -r MAT11NA_09_*L contentuser@/destination scp -r MAT11NA_09_*[^L] contentuser@/destination