使用通配符删除一堆目录名称的一部分

使用通配符删除一堆目录名称的一部分

我正在尝试使用 unix 删除一系列目录名称的最后一部分。以下是命名结构的示例:

s23987_11.09.16_hf_0001
s29485_03.04.07_hs_0005
s39854_01.01.01_an_0011

我试图删除第一个 _ 之后的所有内容,以便目录名称为:

s23987
s29485
s39854

答案1

使用 POSIX shell:

for d in *_*; do mv -- "$d" "${d%%_*}"; done

%%句法表示“尽可能多地匹配:下划线 ( _) 后跟*变量值末尾的任何内容 ( )”。

相关内容