Bash 용 "확장 패턴"extglob를 우연히 발견했습니다. 나는 간단하게 쓸 수있는 디렉토리 2017/02/27
및 2017/02/28
의 파일을 나열하려는 경우Bash 확장 패턴 이스케이프 @ (..)
/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
:
이 같은 디렉토리 구조를 상상 : http://wiki.bash-hackers.org/syntax/pattern
나는이 사건을 조사하고 있습니다 :
ls /basedir/2017/02/@("27"|"28")/*/files.log
굉장! \ o/
이제 문제가됩니다. Bash 확장 패턴에서 여러 디렉토리를 정의하려면 어떻게해야합니까?
이 작동하지 않습니다
ls /basedir/2017/@("02/28"|"03/01")/*/files.log
ls /basedir/2017/@("02\/28"|"03\/01")/*/files.log
을 내가 "확장 패턴"에 대한 여러 디렉토리를 정의하기 위해 얻을 수있는 방법이 있나요?
그러나 중괄호 확장에 대한 유일한 문제는 범위를 동적으로 정의 할 수 없다는 것입니다. – Asgair
확장 패턴을 사용할 수 없으므로 아무 것도 잃지 않습니다. – chepner
확인. 그것은 수치 스럽습니다 ... 나는 아직도 효율적인 솔루션에 더 가깝지 않습니다. 내가 가지고있는 유일한 문제는 중괄호 확장을 동적으로 정의 할 수 없다는 것입니다. 하위 쉘에서 실행하지 않는 한'var1 = "02/28,03/01"ls/basedir/2017/"$ var1"/ */files.log'와 같습니다. 그러나 이것은 작동합니다 :'var2 = "27 | 28"ls/basedir/2017/02/@ ("$ var2")/*/files.log' – Asgair