Скрипт для распознавания имени файла до символа «-» и создания папки с тем же именем, перемещения всех файлов в эту папку

Скрипт для распознавания имени файла до символа «-» и создания папки с тем же именем, перемещения всех файлов в эту папку

у меня есть это

/Folder1/108462-2.jpg
/Folder1/108462-3.jpg
/Folder1/BSR2333-1.jpg
/Folder1/BSR2333-2.jpg
/Folder1/DKS23108554-1.jpg
/Folder1/DKS23108554-2.jpg

Я хотел бы иметь это:

/108462/108462-2.jpg
/108462/108462-3.jpg
/BSR2333/BSR2333-1.jpg
/BSR2333/BSR2333-2.jpg
/DKS23108554/DKS23108554-1.jpg
/DKS23108554/DKS23108554-2.jpg

Я видел это;

do if [[ -f "$file" ]]; then mkdir "${file:0:9}" mv "$file" "${file:0:9}"; fi; done 

но не совсем это делает...

Но как исправить, чтобы использовать полное имя до "-" для создания папки и помещать файлы в эту папку. Спасибо заранее, я новичок в терминале Mac

решение1

На основе описания вы хотите изменить начальный символ /Folder1на имя файла в папке, а именно на -в имени файла.

Это примитивный пример сосмысленные имена переменныхдля читаемого кода.

#! /bin/bash

pathname=/Folder1/108462-2.jpg
newfolder="$(dirname "$pathname")"
newfolder="${newfolder/-.*$//}"
filenamepartofpathname="$(basename $pathname)"
newpathname="$newfolder/$filenamepartofpathname"
echo "$newpathname"

проверка оболочкине выводит никаких данных:

$ shellcheck primitive-example.sh
(no output)
$ ./primitive-example.sh
/108462/108462-2.jpg

Обратите внимание: если в файле их несколько, -вам может потребоваться скорректировать примитивный пример.

Вы также можете попробовать «кодовый гольф»https://codegolf.stackexchange.com/чтобы получить помощь в том, чтобы сделать его менее примитивным, но и менее читабельным.

Связанный контент