Linux에서 절대 경로로 파일 목록을 생성하려면 어떻게해야합니까?
파일 경로를 입력으로 사용하는 쉘 스크립트를 작성 중입니다.
이러한 이유로 전체 경로가 포함 된 재귀 파일 목록을 생성해야합니다. 예를 들어, 파일 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가 홈 디렉토리에 자동 완성되므로 위 명령에 대한 별명을 작성할 수 없습니다.
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}'
'Programing' 카테고리의 다른 글
JavaScript의 "elseif"구문 (0) | 2020.03.31 |
---|---|
Groovy 문자열을 int로 (0) | 2020.03.31 |
마지막 생크를 덮어 쓰지 않고 vim에서 삭제하는 방법은 무엇입니까? (0) | 2020.03.31 |
컬렉션에있는 모든 객체의 속성에 대해 .Max ()를 수행하고 최대 값으로 객체를 반환하는 방법 (0) | 2020.03.31 |
왜 텍스트 영역에 신비한 공백이 가득합니까? (0) | 2020.03.31 |