
Estoy en un directorio donde la ejecución tree
del 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_sequence
produce 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]+.jpg
entradas (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_sequence
coinciden 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_sequence
por 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 sed
expresión (similar a la segunda enla respuesta de freddy). uniq
Luego 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