나는 bash는 스크립트 내부에서 명령 줄에서변수에서 bash 확장 와일드 카드를 만드는 방법은 무엇입니까?
mv ./images/*.{pdf,eps,jpg,svg} ./images/junk/
를 입력하는 것과 같은 효과를 달성하려합니다. 내가 가진 :
MYDIR="./images"
OTHERDIR="./images/junk"
SUFFIXES='{pdf,eps,jpg,svg}'
mv "$MYDIR/"*.$SUFFIXES "$OTHERDIR/"
가있는 실행할 때하지 예기치 않은 오류 제공 :
mv: rename ./images/*.{pdf,eps,jpg,svg} to ./images/junk/*.{pdf,eps,jpg,svg}:
No such file or directory
이 모든 것을 인용하는 올바른 방법은 무엇인가를 mv
원하는 확장을 실제로 것 때문에? (예, ./images/
의 패턴과 일치하는 파일의 많음이있다.)
+1, 깔끔한 트릭,'@()'에 대해 몰랐다. 나는 새로운 것을 배웠다. 맨 페이지에서'?()'패턴,'*()'패턴,'+()'패턴,'@()'패턴 및'!()'패턴이 궁금한 분을 위해서. 'extglob'가 활성화되면 모두 사용할 수 있습니다. – falstro
훌륭해, 고마워! 쉘 스크립트의 인용과 확장은 항상 문제를 야기하는데, 이것은 많은 도움이 될 것입니다. –
@RossDuncan, 나는 http://mywiki.wooledge.org/BashParser를 쉘의 실행 모델과 관련된 순서에 대한 좋은 참조와 그들이 어떤 순서로 시작하는지 제안 할 것이다. –