재귀없이 ls하는 방법


19

디렉토리에 패턴이있는 파일을 ls하려고합니다. 재귀 적이 지 않은 첫 번째 수준 만 스캔하고 싶습니다.

내 스크립트 :

for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
  echo $i;
done

위의 명령은 재귀 적으로 스캔합니다. 첫 번째 레벨 디렉토리 만 스캔하도록하려면 어떻게해야합니까?


printf %s\\n "$INCOMINGDIR/"*"$BUSINESSDATE"*
mikeserv

답변:


39

파싱하지 마십시오ls . 또한 ALL_CAPS_VARS를 사용하지 않는

for i in "$incoming_dir"/*"$business_date"*; do

대화식 으로 하위 디렉토리로 내려 가지 않도록 ls하는 -d옵션이 있습니다.

ls -d $INCOMINGDIR/*$BUSSINESSDATE*

정보 주셔서 감사합니다, 나는 지금 시스템 관리자를 성가 시게하기 위해 이름에 새로운 줄로 파일을 만들기 시작합니다.
Petah

이것이 스마트 sysadmin / programmer가를 사용하는 이유 "${i}"입니다. 당신은에 있을지도 모릅니다 i.
Ricky Beam

@Petah : 또는 의도가 나쁜 사람은 이름이 지정된 파일을 만들 수 있으며 my_file.doc[newline]another_persons_file.doc일부 스크립트는 2 개의 파일 이름으로 보이는 것을 "rm"하려고 시도 할 수 있기를 바랍니다 ... Glenn의 링크는 반드시 읽어야합니다 (mywiki.wooledge.org에서 모두는 읽어야합니다 전체 FAQ 및 함정 페이지)
Olivier Dulac

1
멋있는. 나는 -d 옵션을 몰랐다!
dokaspar

큰! 이것은 더 간단한 일에도 효과적입니다. 예를 들어 모든 점 접두사 파일을 나열하십시오.ls -d .*
Wassadamo

8

이 명령이 재귀 적이어야하는 이유는 없습니다. 그러나 $INCOMINGDIR/*$BUSSINESSDATE*디렉토리와 일치하면 디렉토리 자체 대신이 디렉토리의 내용이 표시됩니다. 그러나이 수준 이상의 재귀는 없습니다.

그 영향을 피하려면이 명령을 사용하십시오.

ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*

for ... in 명령 ls출력 은 위험합니다.

일반적으로 find더 나은 솔루션 또는

for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.