如何縮短tree指令中的影像序列輸出?

如何縮短tree指令中的影像序列輸出?

我所在的目錄中執行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
  • 第二行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

這仍然會為圖像留下兩個條目(因為最後一行在樹繪製部分使用不同的符號),但它仍然將列表修剪到可管理的長度:

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

相關內容