it-source

Bash 디렉토리가 아닌 파일만 나열하는 방법

criticalcode 2023. 4. 11. 22:07
반응형

Bash 디렉토리가 아닌 파일만 나열하는 방법

폴더나 서브파일은 제외하고 한 폴더의 모든 파일을 나열하려면 어떻게 해야 합니까?즉, 다음과 같습니다.파일만 나열하려면 어떻게 해야 하나요?

사용.find:

find . -maxdepth 1 -type f

사용방법-maxdepth 1옵션은 현재 디렉토리(또는 를 치환한 경우)만 검색하도록 합니다..그 디렉토리)를 사용해 주세요.해당 및 하위 디렉터리의 모든 파일을 재귀적으로 나열하려면 해당 옵션을 삭제하십시오.

ls -p | grep -v /

ls -p 를 사용하면 폴더 이름 뒤에 / 를 표시할 수 있습니다.이 폴더는 삭제하는 태그로 기능합니다.

  • carlpett의 기반 답변(find . -maxdepth 1 -type f)는 원칙적으로는 동작하지만, 사용하는 것과는 전혀 다릅니다.모두 프리픽스 앞에 있는 파일명의 잠재적인 정렬되지 않은 리스트가 표시되며,많은 옵션을 적용할 수 없게 됩니다.
    또한.find 은닉 아이템도 반드시 찾아냅니다만,ls의 동작은 의 유무에 따라 달라집니다.-a또는-A옵션들.

    • Alex Hall이 이 질문에 대한 코멘트에서 제안한 개선사항셸글로빙과 다음을 결합하는 입니다.

          find * -maxdepth 0 -type f  # find -L * ... includes symlinks to files
      
      • 단, 이것이 프리픽스 문제를 해결하고 알파벳 순으로 정렬된 출력을 제공하지만 숨겨진 아이템의 포함에 대한 (인라인) 제어나 액세스 권한은 아직 없습니다.ls에는 기타 많은 정렬/출력 형식 옵션이 있습니다.
  • Hans Rogeman + 답변실용적이지만 긴()-l 출력 형식을 사용해야 합니다.


이러한 제한에 대처하기 위해 (ls 필터링) 유틸리티를 작성했습니다.

  • 출력 유연성제공하는 동시에 타입 변환 기능을 제공하는 유틸리티
  • 파일, 디렉토리 및 심볼 링크와 같은 유형 구분 문자를 목록 앞에 배치하기만 하면 됩니다.ls인수(실행)fls --help또는fls --man자세한 것은 이쪽).

예:

fls f        # list all files in current dir.
fls d -tA ~  #  list dirs. in home dir., including hidden ones, most recent first
fls f^l /usr/local/bin/c* # List matches that are files, but not (^) symlinks (l)

인스톨

지원되는 플랫폼

  • npm 레지스트리에서 설치하는 경우: LinuxmacOS
  • 수동으로 설치하는 경우: Bash를 사용하는 Unix와 유사한 플랫폼

npm 레지스트리에서

주의: 패키지 매니저인 Node.js를 사용하지 않더라도npm플랫폼 전체에서 동작하며 설치가 용이합니다.
curl -L https://git.io/n-install | bash

Node.js 가 인스톨 되어 있는 경우는, 다음과 같이 인스톨 합니다.

[sudo] npm install fls -g

주의:

  • 필요 여부에 관계없이sudoNode.js / io.js 설치 방법과 나중에 권한을 변경했는지 여부에 따라 달라집니다.EACCES, 에러, 에러, 에러로 다시 시도해 .sudo.

  • -g글로벌 설치보증하며, 이를 위해fls$PATH.

수동 설치

  • 이 스크립트를 다음 형식으로 다운로드합니다.fls.
  • 한 것으로 하다chmod +x fls.
  • 또는 폴더 내 합니다.$PATH 「」, 「」등입니다./usr/local/bin (macOS) 。/usr/bin(Linux).

하위 디렉터리 없이 일부 디렉터리의 내용 나열

사용하는 것을 좋아합니다.ls 샘플의 : options, options:

  • -l 목록
  • -t시간에 따른 , newest 수수 sort sort 、 sort sort sort
  • -r
  • -F,--classify표시기 중 를합니다.
  • -h,--human-readable- l - s, 1K 234M 2G...

★★★★★★★★★★★★★★★★★.--color()ls --help)

폴더를 제외한 모든 항목 나열

파일, 심볼링크, 디바이스, 파이프, 소켓 등이 표시됩니다.

그렇게

find /some/path -maxdepth 1 ! -type d

날짜별로 쉽게 정렬할 수 있습니다.

find /some/path -maxdepth 1 ! -type d -exec ls -hltrF {} +

파일만 나열:

또는

find /some/path -maxdepth 1 -type f

크기별로 정렬:

find /some/path -maxdepth 1 -type f -exec ls -lSF --color {} +

숨김 항목 목록 금지:

엔트리를 표시하지 점으로 " "를 합니다.! -name '.*':

find /some/path -maxdepth 1 ! -type d ! -name '.*' -exec ls -hltrF {} +

그리고나서

요./some/path타타에 .현재 디렉토리 또는..부모 디렉토리의 경우.

이 경우에도 하실 수 있습니다.lsgrep ★★★★★★★★★★★★★★★★★」egrep을 사용법

ls -l | egrep -v '^d'
ls -l | grep -v '^d'

파일 검색: ls - l / home | grep "^-" | tr - s ' | cut - d ' - f 9

디렉토리 검색: ls - l / home | grep "^d" | tr - s ' | cut - d ' - f 9

링크 검색: ls - l / home | grep "^l" | tr - s ' | cut - d ' - f 9

tr - s ' 는 출력을 공백 구분 파일로 변환합니다.cut 명령어는 딜리미터를 공백으로 지정하고 9번째 필드(항상 파일 이름/디렉토리 이름/링크 이름)를 반환합니다.

나 이거 맨날 써!

천만에요!

ls -l | grep '^-'

로 접속할 수 .cut ★★★★★★★★★★★★★★★★★」awk.

ls -l | grep '^-' | awk '{print $9}'

ls -l | grep '^-' | cut -d " " -f 13
{ find . -maxdepth 1 -type f | xargs ls -1t | less; }

" " 가 되었습니다.xargs 되게 하기 위해-1-l ls

다음 중 하나를 수행할 수 있습니다.

echo *.* | cut -d ' ' -f 1- --output-delimiter=$'\n'
echo *.* | tr ' ' '\n'
echo *.* | sed 's/\s\+/\n/g'
ls -Ap | sort | grep -v /   

이 메서드는 외부 명령을 사용하지 않습니다.

bash$ res=$( IFS=$'\n'; AA=(`compgen -d`); IFS='|'; eval compgen -f -X '@("${AA[*]}")' )

bash$ echo "$res"
. . .

칼펫의 대답에 더해서 말이야파일을 보다 편리하게 표시하려면 출력을 ls로 파이핑할 수 있습니다.

find . -maxdepth 1 -type f|ls -lt|less

가장 최근에 수정된 파일을 목록 형식으로 표시합니다. 많은 파일을 다운로드하고 최근 파일의 비클러터 버전을 보려면 매우 유용합니다.

"find '-maxdepth'는 이전 버전의 bash와 함께 사용할 수 없기 때문에 다음과 같이 사용합니다.

f in $(ls)의 경우, [ -f $f ]의 경우, $f ; f ; f ; f ; f ; done을 에코합니다.

언급URL : https://stackoverflow.com/questions/10574794/how-to-list-only-files-and-not-directories-of-a-directory-bash

반응형