在名称中复制带偶数的文件 - bash

时间:2018-04-24 14:57:52

标签: linux bash shell

我想复制/ usr / lib中以.X.0.0结尾的所有文件,其中X是偶数。有没有比下一个更好的方法来选择所有文件?

SELECT   
    EDGC01.*, EDGC02.*, ATT.*  

我对这个解决方案的问题是,如果文件的名称如“xy.800.0.0”,我需要使用括号三次等。

2 个答案:

答案 0 :(得分:4)

只需使用glob扩展来匹配文件:

cp /usr/lib/*.*[02468].0.0 /path/to/destination

shell将此模式扩展到文件列表,然后将它们作为参数传递给cp

由于您标记了Bash,因此可以使用扩展的glob来使匹配更严格:

shopt -s extglob failglob
cp /usr/lib/*.*([0-9])[02468].0.0 /path/to/destination

这匹配0个或更多其他数字后跟偶数,如果没有文件匹配,则根本不运行该命令。

答案 1 :(得分:0)

您可以使用扩展grep正则表达式仅匹配偶数:

ls -1q /usr/lib | grep -E "\.[0-9]*[02468].0.0$"

然而,正如Tom所说,除了解析ls的输出之外,还有更好的选择。使用glob扩展通常更安全,更快速,并且更易于维护put everything in a python script