유닉스-파일이없는 디렉토리를 제외한 모든 디렉토리와 서브 디렉토리를 나열합니다.


2

현재 경로와 그 아래에 모든 디렉토리와 하위 디렉토리를 나열하고 싶습니다. 디렉토리 만 표시하고 싶었으므로 다음 follwing 명령을 내놓았습니다.

find -type d -exec ls -d1 {} \; | cut -c 3-

예를 들어

webphone
music
finance
finance/banking
finance/realestate
finance/trading
finance/other
finance/moneylending
finance/insurance
webradio
webtv

내가 지금 가진 문제는 디렉토리 금융이 나열되어 있다는 것입니다. finance에는 위에서 본 하위 디렉토리에 파일이 없습니다. 내가 달성하고자하는 것은 다음과 같은 출력입니다.

webphone
music
finance/banking
finance/realestate
finance/trading
finance/other
finance/moneylending
finance/insurance
webradio
webtv

이리스트에는 디렉토리 재무가 표시되지 않습니다. 따라서 파일이없는 디렉토리 (하위 디렉토리 만)를 필터링하는 방법에 대해주의를 기울여야합니다.

답변:


4

한 가지 방법이 있습니다. 모든 일반 파일을 나열하고 파일 기본 이름을 제거하고 중복을 제거하십시오.

find . -type f | sed 's!/[^/]*$!!' | sort -u

선행을 제거하려는 경우 ./:

find . -type f | sed -e 's!/[^/]*$!!' -e 's!^\./!!' | sort -u

정말 고맙습니다! 정규 표현식 검색이 거의 완벽했습니다. 방금 "./"를 제거하고 첫 번째 emtpy 줄을 제거해야했습니다. 내가 지금 실행하는 명령은 find입니다. 타입 f | sed 's! / [^ /] * $ !!' | 정렬 -u | sed '1d'| cut -c 3-
ftiaronsem

@ftiaronsem : 빈 줄은 현재 디렉토리에 해당합니다. 내 편집을 참조하십시오.
Gilles

2

트리 설치를 고려합니다.

  • sudo apt-get 설치 트리

그런 다음 실행

  • 트리 -d / path / to / start / dir

디렉토리 만 표시합니다.

예:

root@X100e:~# tree -d /var/cache/
/var/cache/
├── apache2
│   └── mod_disk_cache
├── apt
│   └── archives
│       └── partial
├── binfmts
├── cups
│   └── rss
├── debconf
├── dictionaries-common
├── flashplugin-installer
...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.