
Estou em um diretório onde a execução tree
do 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_sequence
produz 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 tree
comando 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]+.jpg
entradas (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_sequence
corresponderem 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_sequence
por 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 sed
expressão (semelhante à segunda emA resposta de Freddie). uniq
pode 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