¿Cómo acortar la salida de la secuencia de imágenes en el comando de árbol?

¿Cómo acortar la salida de la secuencia de imágenes en el comando de árbol?

Estoy en un directorio donde la ejecución treedel comando produce algo como esto:

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

La secuencia de imágenes del interior image_sequenceproduce una lista grande que quiero recortar. Mi resultado deseado es algo como a continuación:

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

tree¿ Se puede modificar de alguna manera la salida del comando?

Respuesta1

Prueba esto:

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/'
  • El primero /.../d;elimina todas las líneas que contienen ├── image.[0-9]+.jpgentradas (pseudopatrones)
  • La segunda s/.../\1####\2/reemplaza la última línea.└── image.[0-9]+.jpg

Producción:

$ 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

Por supuesto, esto solo funcionará si todos los archivos image_sequencecoinciden con el patrón de imagen y modificará los nombres de archivos en otros directorios que coincidan con los patrones. Si el último archivo, image_sequencepor ejemplo readme.txt, es , eliminará todas las entradas de imágenes.

Respuesta2

Podrías reemplazar las partes numéricas de los nombres de archivos secuenciales con #s, usando una sedexpresión (similar a la segunda enla respuesta de freddy). uniqLuego puede eliminar las líneas duplicadas:

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

Esto todavía dejará dos entradas para las imágenes (porque la línea final usa un símbolo diferente en la parte del dibujo del árbol), pero aún así ha recortado la lista a una longitud manejable:

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

información relacionada