Если вы знаете, что первая строка всегда будет начинаться с буквы, а вторая строка всегда будет начинаться с табуляции, наиболее эффективный способ сделать это, вероятно, быть использовать : g
(выполнить команду ex для всех строк, соответствующих регулярному выражению) и j!
(присоединиться без удаления пробелов). См. help: g
и help: j
. Комбинируя их, вы получите
:%g/^\w/j!
for dir in./*_*_upstream/
do
mv -- "$dir" "${dir%%_*}"
done
Приведенный выше цикл выбирает каждый каталог (косая черта в конце делает это )в текущем каталоге, который соответствует шаблону :" (что-то )подчеркивание (что-то )подчеркивание вверх по течению ". Затем он переименовывает эти каталоги, используя расширение параметра, чтобы удалить самое длинное совпадение :«подчеркивание (что угодно )», что удаляет все из -и -после первого подчеркивания.
Например:
Настройка:
mkdir DHX30_foo_upstream
mkdir GEMIN5_vs_Cblah_upstream
touch DX31_foo_upstream
Результат:
$ tree
.
├── DHX30
├── DX31_foo_upstream
└── GEMIN5
2 directories, 1 file