LINUX.ORG.RU
ФорумAdmin

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

 ,


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, если кому надо, могу скинуть.



Последнее исправление: Numufar (всего исправлений: 1)

Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от Elyas

Господи, ну что за вечная проблема писать просто *.mp3 вместо $(ls *.mp3) ?

for f in *.mp3; do 
  prefix=${f:20}
  in=${prefix%%_*}
  mkdir -p "$in"
  mv "$f" "$in"
done

vodz ★★★★★
()
Ответ на: комментарий от Numufar
mkdir $( ls *.mp3 | awk  -F '_' '{print ($3)}' | sort | uniq )
for i in *.mp3 ; do mv $i $( echo $i | awk  -F '_' '{print ($3)}' ) ; done

Если возможны пробелы то понадобятся кавычки

sin_a ★★★★★
()

Всем спасибо за столько вариантов! Сделал так:

for f in `ls -1 *.mp3 | sed 's/.*_\([0-9]*\)_.*/\1/' | uniq`
do
 mkdir $f
 mv *-*-*_*-*-*$f*.mp3 $f/
done
Numufar
() автор топика
Ответ на: комментарий от Numufar

Сделал так:

Ерунду вы сделали. Почитайте о uniq, что она делает и зачем там вам подсказывали sort и почему только для mkdir.

vodz ★★★★★
()
Ответ на: комментарий от vodz

что за вечная проблема

та же что и с cat | grep
Безблагодатность...

mos ★★☆☆☆
()
2 апреля 2019 г.
Ответ на: комментарий от vodz

товарищи , можно этот код для батника??

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.