我想复制/ usr / lib中以.X.0.0结尾的所有文件,其中X是偶数。有没有比下一个更好的方法来选择所有文件?
SELECT
EDGC01.*, EDGC02.*, ATT.*
我对这个解决方案的问题是,如果文件的名称如“xy.800.0.0”,我需要使用括号三次等。
答案 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。