디렉토리에 패턴이 있는 일부 파일을 찾으려고 합니다. 재귀가 아닌 첫 번째 레벨만 스캔하고 싶습니다.
내 스크립트:
for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
echo $i;
done
위 명령은 재귀적으로 검색합니다. 첫 번째 수준 디렉터리만 검색하도록 하려면 어떻게 해야 합니까?
답변1
파싱되지 않음ls
. 반품ALL_CAPS_VARS를 사용하지 마세요.
for i in "$incoming_dir"/*"$business_date"*; do
대화형으로 하위 디렉터리로 내려가는 것을 방지하는 옵션이 ls
있습니다 .-d
ls -d $INCOMINGDIR/*$BUSSINESSDATE*
답변2
이 명령이 재귀적이어야 할 이유는 없습니다. 그러나 $INCOMINGDIR/*$BUSSINESSDATE*
디렉터리가 일치하면 디렉터리 자체 대신 해당 디렉터리의 내용이 표시됩니다. 그러나 이 수준을 넘어서면 더 이상 재귀가 없습니다.
이 효과를 피하려면 다음 명령을 사용하십시오.
ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*
for ... in
출력이 있는 명령은 ls
위험합니다.
전반적으로 find
더 나은 솔루션인 것 같 거나
for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*