Programing

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

lottogame 2020. 3. 31. 08:10
반응형

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


find 명령에 절대 경로를 지정하면 절대 경로와 함께 결과가 나옵니다. 따라서 Ken 디렉토리에서 다음을 입력해야합니다.

find /home/ken/foo/ -name bar -print    

(상대 경로 대신 find . -name bar -print)

당신은 얻을 것이다 :

/home/ken/foo/bar

따라서 원하는 것을 원 ls -l하고 절대 경로를 반환하도록하려면 find 명령 ls -l이 찾은 모든 것을 실행하도록 지시하면 됩니다.

find /home/ken/foo -name bar -exec ls -l {} ;\ 

참고 : {}사이에 공백이 있습니다;

다음과 같은 것을 얻을 수 있습니다 :

-rw-r--r--   1 ken admin       181 Jan 27 15:49 /home/ken/foo/bar

파일의 위치를 ​​모르는 경우 언제든지 검색 위치를 변경할 수 있습니다. 검색 경로가 "/"로 시작되는 한, 절대 ​​경로가 반환됩니다. 많은 권한 거부 오류가 발생하는 위치 (예 : /)를 검색하는 경우 표준 오류를 리디렉션하여 실제로 찾기 결과를 볼 수 있습니다.

find / -name bar -exec ls -l {} ;\ 2> /dev/null

( 2>Born 및 Bash 쉘의 구문이지만 C 쉘에서는 작동하지 않습니다. 다른 쉘에서도 작동 할 수 있지만 Bourne 및 Bash에서 작동한다는 것만 알고 있습니다).


lspwd() { for i in $@; do ls -d -1 $PWD/$i; done }

추가 기간없이 목록을 인쇄하고 파일 일치를 검색하는 방법을 보여주는 예제가 있습니다. 도움이 되었기를 바랍니다:

find . -type f -name "extr*" -exec echo `pwd`/{} \; | sed "s|\./||"

find / -print 이것을 할 것이다


ls -1 | awk  -vpath=$PWD/ '{print path$1}'

참고 : https://stackoverflow.com/questions/246215/how-can-i-generate-a-list-of-files-with-their-absolute-path-in-linux

반응형