我正在尝试对unix中的一组日志文件执行操作。该操作是复制。
假设我想将上周的日志文件(1月25日 - 31日)从当前目录复制到另一个目录,这些文件的名称如下:
log-20150125, log-20150126, ..., log-20150131
我在bash中尝试了以下内容:
cp (log-201501)|2[5-9]|3[0-1]*.gz /home/user/bin/Temp
并收到错误消息,指出“意外令牌log-201501附近的语法错误”
我想我做错了什么。捕获两个日期范围的表达式是什么?
答案 0 :(得分:0)
Bash有很多语法,所以你不能只是在willy-nilly周围抛出括号和管道
shopt -s extglob
cp log-201501@(2[6-9]|3[0-1])*.gz /home/user/bin/Temp
请参阅https://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching
如果这太难以理解,请将其拆分
cp log-2015012[6-9]*.gz log-2015013[0-1]*.gz /home/user/bin/Temp
或大括号扩展可读性很好
cp log-201501{26,27,28,29,30,31}*.gz /home/user/bin/Temp