Как сократить вывод последовательности изображений в команде tree?

Как сократить вывод последовательности изображений в команде tree?

Я нахожусь в каталоге, где выполнение 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

Вы можете заменить числовые части последовательных имен файлов на #s, используя sedвыражение (похожее на второе вОтвет Фредди). uniqЗатем можно удалить дубликаты строк:

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

Это все еще оставит две записи для изображений (потому что последняя строка использует другой символ в части рисования дерева), но это все равно сократит список до приемлемой длины:

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

Связанный контент