2014-10-23 6 views
0

인수없이 bash에서 다음 스크립트를 실행하면이 디렉토리에 올바른 수의 파일을 반환합니다. 하지만 *.txt으로 전화하면 1 (어떤 사람이 없어도 *.txt 개의 파일이 있습니다)과 함께 반환됩니다. 스크립트에서 *.something을 올바르게 확장하려면 어떻게해야합니까?전달 된 매개 변수와 일치하는 스크립트의 파일 수

function files { 
    ls -1 --file-type $1 | grep -v '/$' | wc -l 
} 

답변

1

와일드 카드는 함수를 호출하기 전에 확장됩니다 (사용자가 인수를 인용하지 않는 한). 모든 인수를 얻으려면 "[email protected]"을 사용해야합니다.

function files { 
    ls --file-type "[email protected]" | grep -c -v '/$' 
} 

기타 변경 : ls의 출력을 배관 할 때

  1. 당신은 -1 필요하지 않습니다. 출력이 터미널이 아닌 경우이 옵션이 기본값입니다.
  2. grep의 출력을 wc -l으로 파이프 할 필요가없는 경우 -c 옵션을 사용하여 개수를 인쇄 할 수 있습니다.