[linux] Linux에서 절대 경로로 파일 목록을 생성하려면 어떻게해야합니까?

파일 경로를 입력으로 사용하는 쉘 스크립트를 작성 중입니다.

이러한 이유로 전체 경로가 포함 된 재귀 파일 목록을 생성해야합니다. 예를 들어, 파일 bar경로는 다음과 같습니다.

/home/ken/foo/bar

하지만, 지금까지의 내가 볼 수있는, 모두 lsfind만 상대 경로 목록을 제공합니다 :

./foo/bar   (from the folder ken)

명백한 요구 사항처럼 보이지만 find또는 lsman 페이지 에서 아무것도 볼 수 없습니다 .

절대 경로를 포함하여 셸에서 파일 목록을 생성하려면 어떻게해야합니까?



답변

당신이주는 경우에 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가 홈 디렉토리에 자동 완성되므로 위 명령에 대한 별명을 작성할 수 없습니다.