我在一个目录中,运行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
可以以某种方式修改命令的输出吗?
尝试这个:
/.../d;
删除所有包含├── image.[0-9]+.jpg
(伪模式)条目的行s/.../\1####\2/
替换最后一行└── image.[0-9]+.jpg
输出:
这当然只有在所有文件都
image_sequence
与图像模式匹配时才有效,并且会修改与模式匹配的其他目录中的文件名。例如,如果最后一个文件image_sequence
是readme.txt
,那么您将删除所有图像条目。#
您可以使用sed
表达式(类似于Freddy 的答案中的第二个)将顺序文件名的数字部分替换为s 。uniq
然后可以删除重复的行:这仍然会为图像留下两个条目(因为最后一行在树形图部分使用了不同的符号),但它仍然将列表修剪到可管理的长度: