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