PWD 및 세 번째 수준 디렉터리에 있는 모든 파일 이름을 표시합니다.

PWD 및 세 번째 수준 디렉터리에 있는 모든 파일 이름을 표시합니다.

조회를 사용하지 마세요그리고단일 명령: PWD 및 세 번째 수준 디렉터리에 존재하는 모든 파일 이름을 표시합니다.

레벨 3에 있는 모든 파일을 표시하는 형편없는 솔루션이 있습니다.

ls -l ./*/*/* |grep ^- |awk '{print $9}'| grep -E ^./\(.*/\){2}

또는

ls -ld ./*/*/* |grep ^- |awk '{print $9}'

하지만 현재 디렉토리와 레벨 3에 있는 모든 파일을 표시하도록 확장하려면 어떻게 해야 합니까? 찾기를 사용할 필요가 없습니다.

답변1

쉘 와일드카드와 for( )의 도움을 사용하여 다음을 구성할 수 있습니다.test[

for f in * */*/*; do [ -f "$f" ] && echo "$f"; done
  • * */*/**현재 디렉터리( ) 및 세 번째 수준( ) */*/*의 모든 파일 및 디렉터리 와 일치합니다 .

  • [ -f "$f" ]파일인지 확인하고, 그렇다면 파일명( echo "$f") 을 출력하세요.

답변2

펄 버전:

perl -E 'say for(grep {-f } <*>, <*/*/*>)'

또는

perl -E 'map {say if -f} <*>, <*/*/*>'

답변3

가능한 해결책은 다음과 같습니다.단일 명령을 찾을 수 없습니다.

tree -fiF | grep -E -e '^./[[:alnum:]]+/[[:alnum:]]+/[[:alnum:]]+/[[:alnum:]]+$' -e '^./[[:alnum:]]+$'

관련 정보