Переместить все слова в определенном порядке в начало списка

С bash :

for f in XYZ*/*; do mv -v "$f" "${f%/*}/${f:0:5}${f##*/}"; done

Цикл for проходит через все XYZ * каталоги. Затем команда mv переименовывает файлы.

Где:

  • $ f - это исходное имя файла
  • $ {f% / *} - это имя каталога
  • $ {f: 0: 5} - это префикс
  • $ {f ## * /} - это исходное имя файла
-2
20.01.2018, 04:00
1 ответ

Чтобы переместить все строки, начинающиеся с гласной -не гласной -гласной -не гласной, в начало файла:

{ grep -i '[aeiouy][^aeiouy][aeiouy][^aeiouy]' input; grep -iv '[aeiouy][^aeiouy][aeiouy][^aeiouy]' input; } >outfile

Если «не гласный» недостаточно хорошо, замените [^aeiouy]своим списком согласных:[bcdf...].

Пример

Рассмотрим этот входной файл:

$ cat >input
asasxx
bsbsxx
esesxx
wswsxx

Запускаем нашу команду:

$ { grep -i '[aeiouy][^aeiouy][aeiouy][^aeiouy]' input; grep -iv '[aeiouy][^aeiouy][aeiouy][^aeiouy]' input; } >outfile

Это выходной файл:

$ cat outfile
asasxx
esesxx
bsbsxx
wswsxx
0
28.01.2020, 05:15

Теги

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