已经在这里看到了一些负面的回溯答案,由于某些原因,我无法使用ls -l与这些。排除包含某些字符串的文件名,正则表达式
假设我有三个文件:
sample_one.zip
sample_two.zip
sample_three.zip
我要的是简单的ls -l(正则表达式).zip或排除包含一个和两个文件名。 已尝试
ls -l '*(?!one|two).zip'
但没有运气!
已经在这里看到了一些负面的回溯答案,由于某些原因,我无法使用ls -l与这些。排除包含某些字符串的文件名,正则表达式
假设我有三个文件:
sample_one.zip
sample_two.zip
sample_three.zip
我要的是简单的ls -l(正则表达式).zip或排除包含一个和两个文件名。 已尝试
ls -l '*(?!one|two).zip'
但没有运气!
尝试rsync的,如果这是一个选项
如果你可以利用find命令,你可以:
find -name "*.zip" . ! -regex ".*\(\one\|\two\).zip"
然后,您可以使用-exec行动的副本。
您可能想要添加' -name'* .zip''使它更像被要求的东西。 –
看起来你可以使用'ls'而不是正则表达式来匹配shell。至于变换,你可以用'-P'尝试'grep':'ls | grep -P'(?<!one | two)\。zip $''(如果你有一个GNU'grep',它将会工作)。 –
我实际上需要它为“cp”,并且我没有grep选项:( – aprin
@WiktorStribiżewls不识别shell globbing,它只是在ls看到它之前展开它,它只需要文字字符串 – 123