Tôi tình cờ gặp "extglob" mẫu mở rộng cho Bash. http://wiki.bash-hackers.org/syntax/patternThoát trong mẫu mở rộng Bash @ (..)
Tôi đang điều tra trường hợp này:
Hãy tưởng tượng một cấu trúc thư mục như thế này:
/basedir/2017/02/26/uniquedirs1/files.log
/basedir/2017/02/27/uniquedirs2/files.log
/basedir/2017/02/28/uniquedirs3/files.log
/basedir/2017/03/01/uniquedirs4/files.log
/basedir/2017/03/02/uniquedirs5/files.log
Nếu tôi muốn liệt kê các tập tin của thư mục 2017/02/27
và 2017/02/28
tôi chỉ đơn giản có thể viết:
ls /basedir/2017/02/@("27"|"28")/*/files.log
Tuyệt vời! \ o/
Bây giờ là câu hỏi. Làm thế nào tôi có thể xác định nhiều thư mục trong một mẫu mở rộng Bash?
này không hoạt động:
ls /basedir/2017/@("02/28"|"03/01")/*/files.log
ls /basedir/2017/@("02\/28"|"03\/01")/*/files.log
Có cách nào tôi có thể nhận để xác định nhiều thư mục cho "mô hình mở rộng"?
Vấn đề duy nhất với việc mở rộng cú đúp là tôi không thể xác định phạm vi động. – Asgair
Bạn không thể với các mẫu mở rộng, do đó bạn không mất bất cứ thứ gì :) – chepner
Ok. đó là một sự xấu hổ ... Tôi vẫn không gần gũi hơn với một giải pháp hiệu quả. Vấn đề duy nhất tôi có mặc dù là một cú đúp mở rộng không thể được xác định động. như 'var1 =" 02/28,03/01 "ls/basedir/2017 /" $ var1 "/ */files.log' trừ khi tôi thực hiện nó trong một vỏ con. Nhưng nó hoạt động: 'var2 =" 27 | 28 "ls/basedir/2017/02/@ (" $ var2 ")/*/files.log' – Asgair