파일당 한 줄씩 재귀적인 전체 경로 목록을 얻으려면 어떻게 해야 합니까?
어떻게 하면 재귀적인 한 줄당 한 줄의 경로의 플랫 목록을 뱉을 수 있습니까?
예를 들어, 전체 경로가 포함된 평평한 파일 목록을 원합니다.
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt
ls -a1
필요한 것은 거의 다 하지만 경로 조각이 아니라 전체 경로를 원합니다.
찾기 사용:
find .
find /home/dreftymac
파일만 사용하려면(디렉토리, 장치 등은 생략):
find . -type f
find /home/dreftymac -type f
이 정말로 사면로려하를 사용하고 .ls
그런 다음 awk를 사용하여 출력 형식을 지정합니다.
ls -R /path | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }'
ls -ld $(find .)
출력을 수정 시간별로 정렬하려는 경우:
ls -ltd $(find .)
최상의 명령은 다음과 같습니다.tree -fi
는 각 를 인쇄합니다. -f는 파일 이름입니다.
하지 않습니다- 들쓰기인않지습다니하쇄를.
예.
$ tree -fi
.
./README.md
./node_modules
./package.json
./src
./src/datasources
./src/datasources/bookmarks.js
./src/example.json
./src/index.js
./src/resolvers.js
./src/schema.js
링가아파사면려제합거니를 제거해야 합니다.>
출력에서:
tree -fi |grep -v \>
싶다면 ( 파일만 " " " " " " " " (" 아스키 " " " " " " " " " " " 을 사용해 .while
슬롯:슬라이드:
tree -fi |
grep -v \> |
while read -r first ; do
file "${first}"
done |
grep ASCII
다음과 같은 간단한 방법을 사용해 보십시오.
find "$PWD"
오, 정말 긴 답 목록입니다.많은 도움이 되었고 마침내 제가 찾던 것을 만들었습니다.
디렉토리 및 하위 디렉토리의 모든 파일을 나열하는 방법
find "$PWD" -type f
디렉토리와 하위 디렉토리에 있는 모든 디렉토리를 나열하는 방법
find "$PWD" -type d
디렉토리와 하위 디렉토리에 있는 모든 디렉토리 및 파일을 나열하는 방법
find "$PWD"
du -a
찾기/찾기를 사용할 수 없는 일부 제한된 어플라이언스 셸에 유용합니다.
전체 경로에 대해서는 잘 모르겠지만, 당신은 사용할 수 있습니다.-R
재귀를 위해그 대신에, 만약 당신이 마음이 내키지 않는다면.ls
당신은 그냥 할 수 있습니다find *
.
ls 이외의 외부 명령 사용:
ls -R1 /path |
while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done
속임수를 쓸 수 있는 것을 발견하다 / 할 것임
다음 형식으로 bash 명령을 실행합니다.
find /path -type f -exec ls -l \{\} \;
마가지로찬을 잘라내기 위해서, 것도는내잘.-l
세부 정보 및 절대 경로만 반환합니다.
find /path -type f -exec ls \{\} \;
미래의 모든 사람들을 위한 가장 쉬운 방법은 다음과 같습니다.
du
그러나 각 폴더에 포함된 내용의 크기도 표시됩니다. awk를 사용하여 폴더 이름만 출력할 수 있습니다.
du | awk '{print $2}'
편집 - 죄송합니다, 제 잘못입니다.저는 폴더만 있으면 된다고 생각했습니다.나중에 필요한 사람이 생길 경우를 대비해서 이걸 여기에 두겠습니다.
가능한 모든 ls 옵션을 자유롭게 사용할 수 있습니다.
find -type f | xargs ls -1
복잡하게 만들지 마세요.저는 이것을 사용했고 아름다운 결과물을 얻었습니다.
ls -lR /path/I/need
플랫 리스트의 경우 가장 좋은 방법은 다음과 같습니다.
find -D tree /fullpath/to-dir/
(또는 txt 파일에 저장하기 위해)
find -D tree /fullpath/to-dir/ > file.txt
다음은 디렉토리 이름을 보여주는 부분 답변입니다.
ls -mR * | sed -n 's/://p'
설명:
ls -mR *
는 ':'로 끝나는 전체 디렉터리 이름을 나열한 다음 해당 디렉터리의 파일을 별도로 나열합니다.
sed -n 's/://p'
콜론으로 끝나는 선을 찾고 콜론을 벗겨내고 라인을 인쇄합니다.
디렉터리 목록을 반복하여 디렉터리를 찾을 수도 있습니다.아직 작업 중입니다.야그를 통해 와일드카드를 얻는 것은 어려운 일입니다.
als 디렉토리의 끝에 와일드카드를 추가하면 전체 경로가 강제로 지정됩니다.현재 다음과 같은 이점이 있습니다.
$ ls /home/dreftymac/
foo.txt
bar.txt
stackoverflow
stackoverflow/alpha.txt
stackoverflow/bravo.txt
stackoverflow/charlie.txt
대신 이 작업을 수행할 수 있습니다.
$ ls /home/dreftymac/*
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow:
alpha.txt
bravo.txt
charlie.txt
유감스럽게도 이것은 삭제된 디렉토리의 전체 경로를 인쇄하지 않으므로, 원하는 전체 솔루션이 아닐 수 있습니다.
tar cf - $PWD|tar tvf -
이것은 느리지만 재귀적으로 작동하고 디렉터리와 파일을 모두 인쇄합니다.다른 모든 정보/디렉토리 없이 파일 이름만 원하는 경우 awk/grep으로 파이프를 연결할 수 있습니다.
tar cf - $PWD|tar tvf -|awk '{print $6}'|grep -v "/$"
많은 답을 봅니다.이것은 제 것이고, 당신이 Mac에서 작업하고 있다면 꽤 유용하다고 생각합니다.
일부 "번들" 파일(.app, .rtfd, .workflow 등)이 있다는 것을 알고 있을 것입니다.파인더의 창을 보면 단일 파일로 보입니다.그러나 실제로는 그렇지 않다.그리고.$ ls
또는$ find
디렉토리로 표시...따라서 내용을 나열할 필요가 없는 한 다음과 같은 작업을 수행할 수 있습니다.
find . -not -name ".*" -not -name "." | egrep -v "\.rtfd/|\.app/|\.lpdf/|\.workflow/"
물론 이것은 작업 중인 dir를 위한 것이며, 다른 번들의 확장을 추가할 수 있습니다(그러나 항상 다음과 같이)./
그들 뒤에).또는 번들이 없는 경우 다른 확장 기능./
.
오히려 흥미로운 것은 ".lpdf/
(다국어 PDF).정상"을 가집니다..pdf
확장자(!!) 또는 파인더에 없습니다.이렇게 하면 이에 대한 정보를 얻을 수 있습니다(또는 하나의 파일만 계산합니다).pdf
그리고 많은 것들이 아니라…
ls -lR
당신이 찾고 있던 것이거나, 적어도 나는. 건배.
디렉토리가 상대 경로로 전달되고 찾기를 호출하기 전에 디렉토리를 절대 경로로 변환해야 합니다.다음 예제에서는 디렉토리가 스크립트의 첫 번째 매개 변수로 전달됩니다.
#!/bin/bash
# get absolute path
directory=`cd $1; pwd`
# print out list of files and directories
find "$directory"
현재 위치의 모든 파일 재귀 목록:
ls -l $(find . -type f)
그realpath
명령은 확인된 경로를 인쇄합니다.
realpath *
도트 파일을 포함하려면 다음의 출력을 파이프로 연결합니다.ls -a
실제 경로:
ls -a | xargs realpath
하위 디렉터리를 재귀적으로 나열하는 방법
ls -aR | xargs realpath
파일 이름에 공백이 있는 경우,man xargs
를 사용하는 것이 좋습니다.-o
파일 이름이 잘못 처리되는 것을 방지하는 옵션, 이것은 다음의 출력과 가장 잘 작동합니다.find -print0
그리고 다른 답변보다 훨씬 더 복잡해 보이기 시작합니다.
find -print0 |xargs -0 realpath
절대 경로가 있는 디렉터리의 모든 파일을 나열하는 방법에 대한 유닉스 및 리눅스 스택 교환 질문도 참조하십시오.
. 100Gb 이상메모에서리검색하경우는야해용량대의▁if경.▁command 을 하는 합니다.tree
@kerkael이 게시한 것이 아니라.find
또는ls
.
그런 다음 명령을 수행합니다.tree
파일에 출력을 기록하는 것만 다를 뿐입니다.
예:
tree -fi > result.txt
그음에를 .grep command
같 패 턴 사 늘 어선줄로여와 을 사용하여 로.grep -i "*.docx" result.txt
시간을 낭비하지 않고 대용량 메모리에서 검색 파일을 검색하는 것이 더 빠릅니다.
저는 270GB 메모리에서 이러한 명령을 수행하여 100MB의 파일 txt를 얻습니다. 명령어 아, 명에걸시에 .tree
14분이었습니다.
나는 파일 이름을 알고 있었지만 디렉터리도 원했습니다.
find $PWD | fgrep filename
Mac OS 10.12.1에서 완벽하게 작동했습니다.
@ghostdog74: 해결책을 조금 수정합니다.
다음 코드를 사용하여 전체 절대 경로로 파일을 검색할 수 있습니다.
sudo ls -R / | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }' | grep [file_to_search]
언급URL : https://stackoverflow.com/questions/1767384/how-can-i-get-a-recursive-full-path-listing-one-line-per-file
'code' 카테고리의 다른 글
노드의 fs.mkdirSync로 전체 경로를 만드는 방법은 무엇입니까? (0) | 2023.05.13 |
---|---|
Postgre 버전SQL을 실행하고 있습니까? (0) | 2023.05.13 |
SQL에서 조인 순서가 중요합니까? (0) | 2023.05.13 |
jQuery의 큐란 무엇입니까? (0) | 2023.05.13 |
파이썬 3에서 바이트와 문자열을 변환하는 방법은 무엇입니까? (0) | 2023.05.13 |