Хорошо, так что, похоже, я понял это из-за вашей помощи!
Это была простая ошибка! Есть 7 полей, а не 6! Если вы посмотрите на исходное имя файла:
4RCPBlockCoverLtrednalaserfalse 07-10-2012-11-50-14-656.doc.gz
полужирный раздел - это то, что мы идем. Год (2012) и Месяц (7). В сценарии он обрабатывал 10 (в промежутке между 07 и 2012) в качестве первого поля! Все, что я сделал, это добавить [0-9] {2} между ними и вуаля, это работает!Это сценарий, который вы мне дали, а затем вы можете увидеть, как я его отредактировал.
Спасибо за вашу помощь! Сохраненный мой день!
#!/usr/bin/env bash pathtooriginalfiles=$1 pathtotarget=$2 for i in $(ls "${pathtooriginalfiles}"); do year=$(echo -n ${i}| sed -r 's/^.*[0-9]{2}-[0-9]{2}-([0-9]{4})-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{1,3}\.doc\.gz$/\1/') month=$(echo -n ${i}| sed -r 's/^.*([0-9]{2})-[0-9]{2}-[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{1,3}\.doc\.gz$/\1/') echo $year $month mkdir -p "${pathtotarget}/${year}/${month}" ls -l $pathtotarget cp -auv "${pathtooriginalfiles}/${i}" "${pathtotarget}/${year}/${month}/" done«,» между {1,3} был для меня ключом.
и «/» в конце строки cp $ {month} / "был ключевым.