2012-01-25 4 views

답변

3

을 내 previous answer 당신이 정말로 find를 사용하고 싶습니다. 당신이 라인 스크립팅의 7-10에서 수행하려는 것은 바로이 수행 할 수 있습니다 :

find /home/user ! -type d -maxdepth 1 
+1

실제로 사용해 보셨습니까? 잘못된. –

+1

@JoSo 감사합니다. 다음에'\ n'을 잊었다 고 말할 수 있습니다. – SiegeX

+0

네, 혹은 그보다 더 나은 방법은'find/home/user -type f'를 사용하거나 OP가 원하는 것을하기 위해서'find/home/user -not type d'로 바꿉니다 ;-) –

2

당신은 $filename가 디렉토리를 참조하는지 여부를 확인하기 위해 -d 연산자를 사용할 수 있습니다

for filename in /home/user/* 
do 
    if [ ! -d "${filename}" ] 
    then 
    echo $filename 
    fi 
done; 

세부 사항 및 기타 사용 가능한 연산자에 대한 test manpage를 참조하십시오.

당신은 또한 find command 사용할 수 있습니다 마찬가지로

find /home/user -not -type d -maxdepth 1 
0
while IFS='$\n' read -r filename 
    do echo "$filename" 
done < <(find /home/user/ -type f -maxdepth 1) 
7
for filename in /home/user/* 
do 
    if [ ! -d "$filename" ]; then 
     echo $filename 
    fi 
done 

또는에서, find 명령을 사용하여 문 내부의 루프. 이 (안된)와 같은 뭔가 :이 디렉토리, 그리고 그는 !로 반전 않다면

if [ ! -d "$filename" ] 
then 
// do stuff 
fi 

-d는 사실이다. 존재하고 디렉토리가 아니라면 성공할 것입니다.

+0

이것은 정답입니다 ('find'와 쉘 상호 작용을 얻으려면 하드임을 강조하자. –

+0

첫 번째 코드 부분을 그대로 사용하면 폴더의 내용 대신에'/ home/user/*'가 표시된다. – Mechaflash

+0

@Mechaflash 그러면'/ home/user'는 비어 있거나 숨겨진 파일 만 있습니다. 숨겨진 파일을 얻으려면'find'명령으로'/ home/user /.*'또는'find'를 사용할 수 있습니다 Jo So Hints와 같이) 당신이 그것을 어떻게 사용하는지 알려줄 필요가 있습니다. – Kevin

0

당신은 조건부을 사용할 수 있습니다

find /home/user -type f -printf "%f\n" 
1

find 명령이 원하는대로 더 적합합니다.

find /home/user -type f 
관련 문제