FREEDOM. FRIENDS. FEATURES. FIRST.
페도라 한국 사용자 모임

shell script 디렉토리만 출력하는 방법에 대해 여쭤 보겠습니다.

게시판 질문게시판 shell script 디렉토리만 출력하는 방법에 대해 여쭤 보겠습니다.

  • This topic has 1개 답변, 1명 참여, and was last updated 4 years, 10 months 전에 by 난해주님. This post has been viewed 21 times
  • 만든이
    게시글
  • #13693
    난해주님
    참가자
    • 게시글114
    • 댓글337
    • 총합451
    • ★★
    @workman729

    shell scripts 작성시에 디렉토리에 파일과 디렉토리가 혼재할 경우
    출력을 아래와 같이 파일과 디렉토리를 분리하는 것은 여러가지 방법은 있습니다.

    디렉토리만 출력할 경우

    # ls -d */
    # ls -l | grep ^d

    파일만 출력할 경우

    # ls -l | egrep -v ^d
    # ls -p | grep -v /

    등의 방법이 있는 데 출력시 여러 정보가 따라 붙습니다.

    출력되는 정보를 가져와서 그대로 압축을 해야 하는 데
    ls -d */ 를 사용할 경우 디렉토리 뒤에 "/" 붙습니다.

    예를 들어 아래와 같은 디렉토리가 있다면
    config/ help/ self/

    위의 출력을 이용하여 압축할 경우 에러가 납니다. 이유야 슬러쉬가 있으니까요...^^

    즉, 제가 원하는 것은 아래와 같이 슬러시 없이 정보가 출력되는 것을 원합니다.
    config help self

    슬러쉬 없이 이용할려면 ls -t 옵션을 이용하면 되지만 디렉토리와 파일의 구분이 없어지므로
    압축이 중구난방입니다.

    출력이 디렉토리만 뽑아와서 슬러쉬 없이 이용하는 방법이 없을 까요??

    그동안 디렉토리면 디렉토리, 파일이면 파일만 다루어서
    혼재되어 있는 경우엔 데이타를 뽑아내는 것은 문제가 없지만
    슬러쉬 없이 정보를 가져오려면 쓸데 없는 정보가 붙기 때문에 for 문 돌리기가 어렵습니다.

    뭔가 ls -t 말고는 방법이 없을까요??

0 답변 글타래를 보이고 있습니다
  • 글쓴이
    답변
    • #15615
      난해주님
      참가자
      참가자
      • 게시글114
      • 댓글337
      • 총합451
      • ★★
      @workman729

      음! 가방끈 짧아서 알고리즘이 생각났다 안났다 하는 군요!
      금방 생각을 정리하니 아래와 같이 해결 되었습니다.

      cd "/home/<username>/www"

      for i in $(ls -d */); do

      echo ${i%%/};
      tar ~~~ 생략

      done

0 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.