
у меня есть это
/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/чтобы получить помощь в том, чтобы сделать его менее примитивным, но и менее читабельным.