【问题标题】:How to extract a subfolder name with a particular pattern?如何提取具有特定模式的子文件夹名称?
【发布时间】:2014-04-25 14:24:34
【问题描述】:

我无法提取具有特定模式的子文件夹名称。例如,

/home/usr/VIP_00011_selected/Mark/Test
/home/usr/VIP_00021_selected/Mark/Test
/home/usr/VIP_02015_selected/Mark/Test
...

我想使用 'find' 或其他命令来提取没有 '_selected' 的子文件夹名称,以及类似的输出

VIP_00011
VIP_00021
VIP_02015

非常感谢。 A.

编辑:

find . -type d -iname "VIP*"

可以完成部分返回的工作

./VIP_02015_selected

但我不想返回 ./ 也不想要 _selected

【问题讨论】:

    标签: linux path find


    【解决方案1】:

    你可以使用cut:

    $> find . -type d -iname "VIP*"
    ./VIP_00021_selected
    ./VIP_00025_selected
    ./VIP_00011_selected
    
    $> find . -type d -iname "VIP*" | cut -d'/' -f2 | cut -d'_' -f1,2
    VIP_00021
    VIP_00025
    VIP_00011
    

    -d 指定分隔符,-f 指定要打印的字段。在第一个管道中,您使用 / 剪切并选择第二个字段 (VIP_00021_selected),在第二个管道中,您剪切 _ 并保留第一个和第二个字段(VIP00021) .

    您还可以指定字段范围:-f1-3 将保留第一个、第二个和第三个字段。并且您可以组合:-f1-3,5-10 将保持从 1 到 10,除了第 4 个。

    【讨论】:

    • 非常感谢您的回答。你能解释一下 cut -f2 是什么吗?