Page tree

Contents


개요

shell script 등을 작성할 때 특정 폴더내의 sub directory 를 순회하면서 특정 작업을 수행해야 하는 경우가 많이 있다.

ls 의 option 에는 directory 목록만 얻어오는 방법이 없으므로 ls 와 다른 command 를 사용해서 directory 목록을 얻어오는 방법을 정리해 본다

 

대상 폴더는 /target 이고 하위 directory 는 cs, draft, files, static 4개가 있다고 가정한다.

방법

1.Using echo

$ echo target/*
target/cs target/draft target/files target/static

2.Using ls -d */

$ ls -d target/*
target/cs  target/draft  target/files  target/static

3.Using ls and grep

$ ls -l target | grep "^d"
drwxr-xr-x. 2 lesstif rnd 4096 2013-11-18 13:43 cs
drwxr-xr-x. 2 lesstif rnd 4096 2013-11-18 13:43 draft
drwxr-xr-x. 2 lesstif rnd 4096 2013-11-18 13:43 files
drwxr-xr-x. 2 lesstif rnd 4096 2013-11-18 13:43 static

(warning) -l 옵션을 주고 상세 출력을 해야 directory 여부를 확인할 수 있는데 상세출력일 경우 shell script 에서 가져와서 처리하기가 불편한 문제가 있음.

4.Bash Script  사용

bash 에만 있는 기능을 이용하여 사용

경로명 맨 뒤에 / 로 끝나야 정상동작함.!

$   for i in $(ls -d target/*/); do echo ${i%%/}; done 
target/cs
target/draft
target/files
target/static

 

shell script 에서 사용할 경우 3번을 제외하고는 아무거나 골라써도 무난

shell script 예제
#!/bin/sh
 
DIRS=`ls -d target/*/`
 
for i in ${DIRS};do
      echo "Entering directory=$i";
      cd $i;
      cd ..;
done

 

Ref

 

  • No labels

This page has no comments.