ツリーコマンドで画像シーケンスの出力を減らすには?

ツリーコマンドで画像シーケンスの出力を減らすには?

私があるディレクトリからコマンドを実行すると、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
  • 2行目は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

次の式を#使用できます。sedフレディの答え)。 uniqその後、重複行を削除できます。

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

(最後の行はツリー描画部分で異なるシンボルを使用するため)画像の2つの項目がまだ残りますが、リストはまだ管理可能な長さに切り捨てられます。

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

関連情報