조회를 사용하지 마세요그리고단일 명령: 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:]]+$'