2017-06-29 69 views
1

已经在这里看到了一些负面的回溯答案,由于某些原因,我无法使用ls -l与这些。排除包含某些字符串的文件名,正则表达式

假设我有三个文件:

sample_one.zip 
sample_two.zip 
sample_three.zip 

我要的是简单的ls -l(正则表达式).zip或排除包含一个和两个文件名。 已尝试

ls -l '*(?!one|two).zip' 

但没有运气!

+0

看起来你可以使用'ls'而不是正则表达式来匹配shell。至于变换,你可以用'-P'尝试'grep':'ls | grep -P'(?<!one | two)\。zip $''(如果你有一个GNU'grep',它将会工作)。 –

+0

我实际上需要它为“cp”,并且我没有grep选项:( – aprin

+0

@WiktorStribiżewls不识别shell globbing,它只是在ls看到它之前展开它,它只需要文字字符串 – 123

回答

0

尝试rsync的,如果这是一个选项

1

如果你可以利用find命令,你可以:

find -name "*.zip" . ! -regex ".*\(\one\|\two\).zip" 

然后,您可以使用-exec行动的副本。

+1

您可能想要添加' -name'* .zip''使它更像被要求的东西。 –

相关问题