파일 경로를 입력으로 사용하는 쉘 스크립트를 작성 중입니다.
이러한 이유로 전체 경로가 포함 된 재귀 파일 목록을 생성해야합니다. 예를 들어, 파일 bar
경로는 다음과 같습니다.
/home/ken/foo/bar
하지만, 지금까지의 내가 볼 수있는, 모두 ls
와 find
만 상대 경로 목록을 제공합니다 :
./foo/bar (from the folder ken)
명백한 요구 사항처럼 보이지만 find
또는 ls
man 페이지 에서 아무것도 볼 수 없습니다 .
절대 경로를 포함하여 셸에서 파일 목록을 생성하려면 어떻게해야합니까?
답변
당신이주는 경우에 find
시작하는 절대 경로를, 그것은 절대 경로를 인쇄합니다. 예를 들어, 현재 디렉토리에서 모든 .htaccess 파일을 찾으려면 다음을 수행하십시오.
find "$(pwd)" -name .htaccess
또는 쉘 $PWD
이 현재 디렉토리로 확장 된 경우 :
find "$PWD" -name .htaccess
find
단순히 해당 경로에서 파일에 대한 상대 경로에 제공된 경로를 앞에 추가합니다.
Greg Hewgill 은 또한 pwd -P
현재 디렉토리에서 심볼릭 링크를 해결하려는 경우 사용을 제안했습니다 .
답변
readlink -f filename
완전한 절대 경로를 제공합니다. 그러나 파일이 심볼릭 링크 인 경우 최종 확인 된 이름을 얻게됩니다.
답변
합니다 (DIRS이 사용 /
후가 **
떠들썩한 파티에 필요한 디렉토리를 제한하기 위해) :
ls -d -1 "$PWD/"**/
현재 디렉토리 바로 아래에있는 파일 및 디렉토리의 경우 이름에 다음이 포함됩니다 .
.
ls -d -1 "$PWD/"*.*
이 모든 것 :
ls -d -1 "$PWD/"**/*
여기에서 가져온
http://www.zsh.org/mla/users/2002/msg00033.html
bash에서 **
활성화하면 재귀 적 shopt -s globstar
입니다.
답변
당신이 사용할 수있는
find $PWD
bash에서
답변
ls -d "$PWD/"*
이것은 현재 디렉토리 에서만 보입니다 . 공백이 포함 된 경우 “$ PWD”를 인용합니다.
답변
명령: ls -1 -d "$PWD/"*
이것은 아래와 같이 파일의 절대 경로를 제공합니다.
[root@kubenode1 ssl]# ls -1 -d "$PWD/"*
/etc/kubernetes/folder/file-test-config.txt
/etc/kubernetes/folder/file-test.txt
/etc/kubernetes/folder/file-client.txt
답변
는 $PWD
위의 매튜에 의해 좋은 방법입니다. 파일 만 인쇄하려면 find -type f 옵션을 추가하여 일반 파일 만 검색 할 수 있습니다. 다른 옵션은 디렉토리 등에 대해서만 “d”입니다. 따라서 귀하의 경우에는 .c ext를 가진 파일 만 검색하려는 경우 :
find $PWD -type f -name "*.c"
또는 모든 파일을 원하는 경우 :
find $PWD -type f
참고 : bash가 별명을 설정하면 $ PWD가 홈 디렉토리에 자동 완성되므로 위 명령에 대한 별명을 작성할 수 없습니다.