Como encurtar a saída da sequência de imagens no comando tree?

Como encurtar a saída da sequência de imagens no comando tree?

Estou em um diretório onde a execução treedo comando produz algo assim:

├── 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

A sequência de imagens interna image_sequenceproduz uma listagem grande que desejo cortar. Minha saída desejada é algo como abaixo:

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

A saída do treecomando pode ser modificada de alguma forma?

Responder1

Experimente isto:

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/'
  • O primeiro /.../d;exclui todas as linhas contendo ├── image.[0-9]+.jpgentradas (pseudopadrão)
  • A segunda s/.../\1####\2/substitui a última linha└── image.[0-9]+.jpg

Saída:

$ 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

É claro que isso só funcionará se todos os arquivos image_sequencecorresponderem ao padrão da imagem e modificará os nomes dos arquivos em outros diretórios que correspondam aos padrões. Se o último arquivo, image_sequencepor exemplo readme.txt, for , você removerá todas as entradas de imagem.

Responder2

Você poderia substituir as partes numéricas dos nomes de arquivos sequenciais por #s, usando uma sedexpressão (semelhante à segunda emA resposta de Freddie). uniqpode então remover as linhas duplicadas:

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

Isso ainda deixará duas entradas para as imagens (porque a linha final usa um símbolo diferente na parte do desenho da árvore), mas ainda reduziu a lista para um comprimento gerenciável:

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

informação relacionada