[bash] Bash 디렉토리의 디렉토리가 아닌 파일 만 나열하는 방법은 무엇입니까?

폴더 또는 서브 파일이 아닌 한 폴더의 모든 파일을 나열하려면 어떻게해야합니까? 즉, 파일 만 나열하려면 어떻게해야합니까?



답변

사용 find:

find . -maxdepth 1 -type f

-maxdepth 1옵션을 사용하면 현재 디렉토리 (또는를 .일부 경로로 바꾸면 해당 디렉토리) 만 볼 수 있습니다. 해당 및 하위 디렉토리에있는 모든 파일의 전체 재귀 목록을 원하면 해당 옵션을 제거하십시오.


답변

ls -p | grep -v /

ls -p를 사용하면 제거 할 태그 역할을하는 폴더 이름 뒤에 /를 표시 할 수 있습니다.


답변

  • carlpett의 find기반 답변 ( find . -maxdepth 1 -type f)은 원칙적으로 작동하지만 다음을 사용하는 것과 완전히 동일하지는 않습니다 ls. 모든 접두사가 붙은 잠재적으로 정렬되지 않은 파일 이름 목록 을 얻고 의 많은 옵션 을 적용 할 수있는 기능을 잃게됩니다./ls .
    또한 find 항상 숨겨진 항목도 찾는 반면 ls‘동작은 -a또는 -A옵션의 유무에 따라 달라집니다 .

    • 개선 제안, 알렉스 홀 질문에 단 댓글에서는 것입니다 결합 쉘 대체 (globbing)을 함께find :

          find * -maxdepth 0 -type f  # find -L * ... includes symlinks to files
      
      • 그러나 이것은 접두사 문제를 해결하고 알파벳순으로 정렬 된 출력 을 제공하지만 여전히 숨겨진 항목의 포함을 (인라인) 제어 할 수 없으며 ls다른 많은 정렬 / 출력 형식 옵션에 액세스 할 수 없습니다 .
  • Hans Roggeman의 ls+ grep대답 은 실용적이지만 long ( -l) 출력 형식 을 사용하도록 잠급니다 .


내가 쓴 이러한 한계를 해결하기 위해 fls( f를 iltering LS 유틸리티) ,

  • 출력 유연성을ls 제공하는 동시에 유형 필터링 기능 을 제공하는 유틸리티 ,
  • 파일, 디렉토리 및 심볼릭 링크 같은 유형 필터링 문자 를 인수 목록 앞에 배치하기 만하면됩니다 (실행 하거나 자세히 알아보기).fdllsfls --helpfls --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를 사용 하는 모든 유닉스 계열 플랫폼

로부터 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.

수동 설치

  • 다운로드 bash스크립트 등을 fls.
  • 와 그것을 실행합니다 chmod +x fls.
  • (macOS) 또는 (Linux) $PATH와 같은 에서 폴더로 이동하거나 심볼릭 링크합니다 ./usr/local/bin/usr/bin


답변

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

ls샘플을 위해 옵션을 사용하는 것을 좋아합니다 .

  • -l 긴 목록 형식 사용
  • -t 수정 시간별로 정렬, 최신 항목부터
  • -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.에 대한 목록 현재 디렉토리..에 대한 상위 디렉토리 .


답변

당신은 또한 사용할 수 ls와 함께 grep또는 egrep및 별칭으로 프로필에 넣어 :

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


답변

파일 찾기 : ls -l / home | grep “^-“| tr -s ”| 잘라 내기 -d ”-f 9

디렉토리 찾기 : ls -l / home | grep “^ d”| tr -s ”| 컷 -d ”-f 9

링크 찾기 : ls -l / home | grep “^ l”| tr -s ”| 잘라 내기 -d ”-f 9

tr -s ”는 출력을 공백으로 구분 된 파일로 변환합니다. cut 명령은 구분자가 공백이라고 말하고 9 번째 필드 (항상 파일 이름 / 디렉토리 이름 / 링크 이름)를 반환합니다.

나는 이것을 항상 사용한다!


답변

{ find . -maxdepth 1 -type f | xargs ls -1t | less; }

xargs작동하도록 추가 되었으며 추가 정보 없이 파일 이름 만 표시 하는 -1대신 사용-lls