트리 명령에서 이미지 시퀀스 출력을 줄이는 방법은 무엇입니까?

트리 명령에서 이미지 시퀀스 출력을 줄이는 방법은 무엇입니까?

내가 있는 디렉터리에서 명령을 실행하면 tree다음이 생성됩니다.

├── directory1
│   └── image_sequence
│       ├── image.0001.jpg
│       ├── image.0002.jpg
│       ├── image.0003.jpg
│       ├── image.0004.jpg
│       ├── image.0005.jpg
│       └── image.0006.jpg
│ 
└── directory2
    ├── somefile.ext
    └── someanotherfile.ext2

내부 이미지 시퀀스는 image_sequence내가 자르고 싶은 큰 목록을 생성합니다. 내가 원하는 출력은 다음과 같습니다.

├── directory1
│   └── image_sequence
│       └── image.####.jpg
│ 
└── directory2
    ├── somefile.ext
    └── someanotherfile.ext2

tree명령의 출력을 어떻게든 수정할 수 있습니까?

답변1

이 시도:

tree | sed '/\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 image\.[0-9]\+\.jpg/d; s/\(\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 image\.\)[0-9]\+\(\.jpg\)/\1####\2/'
  • 첫 번째는 (의사 모드) 항목을 포함하는 /.../d;모든 줄을 제거합니다.├── image.[0-9]+.jpg
  • 두 번째 줄이 s/.../\1####\2/마지막 줄을 대체합니다.└── image.[0-9]+.jpg

산출:

$ tree | sed  '/\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 image\.[0-9]\+\.jpg/d; s/\(\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ima
ge\.\)[0-9]\+\(\.jpg\)/\1####\2/'
.
├── directory1
│   └── image_sequence
│       └── image.####.jpg
└── directory2
    ├── someanotherfile.ext
    └── somefile.ext

3 directories, 8 files

image_sequence물론 이는 모든 파일이 이미지 패턴과 일치하는 경우에만 작동하며 패턴과 일치하는 다른 디렉터리의 파일 이름을 수정합니다. image_sequence예를 들어, 마지막 파일이 이면 readme.txt모든 이미지 항목이 삭제됩니다.

답변2

다음과 같은 표현식을 #사용할 수 있습니다 .sed프레디의 대답). uniq그런 다음 중복 행을 제거할 수 있습니다.

tree | sed 's/\.[0-9]\+\.jpg/.####.jpg/g' | uniq

(마지막 줄이 트리 그리기 부분에서 다른 기호를 사용하기 때문에) 이미지에 대한 두 개의 항목이 여전히 남지만, 목록은 여전히 ​​관리 가능한 길이로 잘립니다.

.
|-- directory1
|   `-- image_sequence
|       |-- image.####.jpg
|       `-- image.####.jpg
`-- directory2
    |-- someanotherfile.ext2
    `-- somefile.ext

관련 정보