2017-05-22 12 views
0

쉘 스크립트를 사용하여 주어진 경로의 모든 폴더의 절대 경로를 나열하려고합니다.주어진 경로에 대한 폴더의 절대 경로 목록 - 쉘

ls -l /var/www/temp 

그러나 나는 절대 경로를 나열합니다 ls 명령에 대한 옵션을 찾을 수 없습니다 : 나는 무엇을 시도했다

이다.

는 I에 유래에 관련된 질문을 발견 : how to list full paths of folders inside a directory in linux?

하지만 내가 필요로하는 것은 그 자체가 내가 절대 경로로 지정된 경로에있는 모든 폴더를 (이 경로가 다름) 나열 할 필요가 하나의 명령입니다.

누구든지 도와 줄 수 있습니까? 미리 감사드립니다.

+1

가능한 [Unix ls 명령 : 옵션을 사용할 때 전체 경로 표시] (http://stackoverflow.com/questions/5580828/unix-ls-command-show-full-path-when-using-options) – Dymen1

+0

링크 된 질문의 중복으로 표시된 질문에서 [이 anwser] (https://stackoverflow.com/a/16768547)를하지 않았습니까? 이미 필요한 것을하십시오. –

+0

@ Dymen1.. 그 솔루션에 대한 질문은 어디에서 경로를 지정할 수 있습니까? – Jenz

답변

0

이 도움이 될 것입니다하지만 당신은 찾기와 PWD의 대체를 사용할 수 있습니다 "ls"의

를 사용하지 않는 것.

find /var/www/temp -type d 

하지만이 목록이 화면에 출력됩니다.

0

쉘 기능은 어떻습니까?

dabspath() { 
if [ -d "$1" ] 
then 
    cd "$1" 
    find "$PWD" -type d 
    cd "$OLDPWD" 
else 
    echo "$0: $1: No such directory" 
fi 
} 

사용법 : dabspath foo

푸 후 푸의 절대 경로와 하위 디렉토리를 인쇄합니다 현재 작업 디렉토리에 상대적인 디렉토리 인 경우.

0

for D in `find . -maxdepth 1 -type d`; do echo $PWD${D#.}; done

어떻게 작동 :

  1. 첫째, 배쉬는 역 따옴표 내에서 찾기 명령을 실행하고 모든 직접 서브 디렉토리의 이름입니다 반환, 무엇을 발견하여 역 따옴표에 부품을 교체합니다 작업 디렉토리.
  2. 다음으로 for 루프는 모든 하위 디렉토리를 통과하고 변수 D에 저장된 각 하위 디렉토리에 대해 작업 디렉토리 ($ PWD) 다음에 하위 디렉토리 D가있는 경로를 인쇄합니다. 여기서 하위 디렉토리 D는 prexif " . " 이렇게하면 절대 경로가 예상대로 인쇄됩니다.

참고 : 모든 디렉토리는 자체 ("."하위 디렉토리)에 대한 하드 링크가 있으므로 작업 디렉토리에 대한 경로도 인쇄합니다.