LINUX.ORG.RU

Перемещение файлов в папку, названную частью имени этого файла

 ,


1

1

Здравствуйте, господа. Не ругайтесь сильно за нубство. Есть много файлов с форматом имени:

DD-MM-YYYY_hh-mm-ss_in_out.mp3

Например:

17-12-2018_16-20-48_2000_3000.mp3

18-12-2018_10-26-31_1000_88005553535.mp3

Отличаться по количеству символов может только последний номер(«out»). Нужно создать папку с именем, совпадающим с «in» и переместить в неё все файлы, у которых «in» совпадает с именем папки. То есть, взять «17-12-2018_16-20-48_2000_3000.mp3», создать папку «2000» и переместить в него этот файл. Взять «18-12-2018_10-26-31_1000_88005553535.mp3», создать папку «1000» и переместить этот файл в созданную или уже существующую папку. Каким образом это можно реализовать на bash? Спасибо.

P.S. Есть решение на CMD/BAT, если кому надо, могу скинуть.

Ответ на: комментарий от Elyas

Работает, спасибо!) А если вариант, не привязанный к количеству символов? А то вдруг.. Например, через sed? Пытаюсь сделать что-то вроде

#!/bin/bash
for f in `ls -1 *.mp3 | sed 's/.*-*-*_*-*-*_\([0-9]\{4\}\)_*.*/\1/' | uniq`
do
 mkdir $f
 mv *-*-*_*-*-*_$f_*.mp3 $f/
done

Только вот берет он не «in», а первые 4 символа «out».

Numufar ()