我有这样的文件夹结构:
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