Переименование каталогов со специфическими расширениями

Если вы знаете, что первая строка всегда будет начинаться с буквы, а вторая строка всегда будет начинаться с табуляции, наиболее эффективный способ сделать это, вероятно, быть использовать : g (выполнить команду ex для всех строк, соответствующих регулярному выражению) и j! (присоединиться без удаления пробелов). См. help: g и help: j . Комбинируя их, вы получите

:%g/^\w/j!
0
29.06.2018, 23:33
2 ответа
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
3
28.01.2020, 02:16

Если в Linux:

rename -v 's/_.*//' *_upstream/
2
28.01.2020, 02:16

Теги

Похожие вопросы