2017-06-29 388 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''使它更像被要求的東西。 –

相關問題