나는 디렉토리를 a1..a5, b1..b5 및 c1..c5있습니다. 각 디렉토리 안에는 두 개의 파일 a1, b1 및 c1이 있습니다.두 번 배쉬 명령 치환
do mkdir /tmp/{a,b}$d; touch /tmp/{a,b,c}$d/{a,b,c}1; done;
'a'로 시작하는 디렉토리 안에 'a'또는 'b'로 시작하는 모든 파일을 가져 오려고합니다.
DATA="/tmp/{a,b}*"
echo ${DATA}
DIRS=`ls -1 -d ${DATA}/a*`
echo ${DIRS}
에서 : 나는 파일을 얻을 나중에 디렉토리를 저장하고 데이터라는 변수를 사용합니다,
/tmp/a1/a1 /tmp/a2/a1 /tmp/a3/a1 /tmp/a4/a1 /tmp/a5/a1 /tmp/b1/a1 /tmp/b2/a1 /tmp/b3/a1 /tmp/b4/a1 /tmp/b5/a1
을 지금 : 나는 그것을 할 수 있습니다
DIRS=`ls -1 -d /tmp/{a,b}*/a*`
echo ${DIRS}
및 취득 출력, 데이터 내용은 OK (/tmp/{a, b} *)이지만 다음과 같은 오류 메시지가 나타납니다.
ls: cannot access /tmp/{a,b}*/a*: No such file or directory
왜 이런 일이 발생하는지 알고 싶습니다.
이 발생합니다. 이것은'echo something'을했을 때'var = something; echo $ var', 둘 다 glob을 확장 시키게 될 것이지만, 이전의 것만이 중괄호를 확장하게 될 것입니다. –
감사합니다 !!! @thatotherguy –