2009-11-14 8 views
2

디렉토리의 각 파일을 반복하려고합니다. 지금까지 내 코드가 있습니다.linux 디렉토리의 파일을 반복합니다.

while read inputline 
do 
    input="$inputline" 
    echo "you entered $input"; 

if [ -d "${input}" ] 
    then 
    echo "Good Job, it's a directory!" 

    for d in $input 
     do 
     echo "This is $d in directory." 
     done 
    exit 

내 출력은 왜이 코드가 작동하지

this is $input directory. 

한 라인 항상? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

차갑다. 내가 에코를 인쇄 할 때

$input/file 

왜 그런가? 디렉터리 접두사없이 파일을 출력하면 안됩니까?

+1

'csh' 유도 포탄이 Bourne 쉘 ('for')에서 파생 된 것보다 현저하게 다른 구문 ('foreach')이 있으므로, 여러분이 의미하는 것과 함께 질문에 태그를다는 것이 도움이됩니다 ... – dmckee

+0

이것에 대한 사용 사례는 무엇입니까? 그렇지 않다면 find -type d를 사용할 수도 있습니다. – ghostdog74

답변

6
for d in "$input"/* 
+0

왜 $ input 주위에 큰 따옴표를 추가 했습니까?이 작업을 수행하는 데는 좋은 이유가 있습니까? "$ input/*"에 대해서도 알아 냈습니다. 감사합니다 .. –

+1

$ 입력에 공백이 있으면 등호 할 필요가 있습니다. – pixelbeat

3

이 다소을 단순화하고 디렉토리 체크 없애 싶은 경우에, 당신은 아마 무언가 같이, 파일 및 디렉토리에서 작업을 작성할 수

read inputline 
ls "$inputline" | while read f; do 
    echo Found "$f" 
done 
관련 문제