Я не думаю, что есть простой способ сделать это. Однако вы можете сделать «однострочное» решение, если используете конвейеры и циклы for, например:
for file in $(ls *.tif); do sed -r 's/(.*\.[0-9]{4})([0-9]{2})(.*)/\1 \2 \3/' <<< "$file" | awk '{print "mkdir -p dstDir/Month" $2 "; cp", $1 $2 $3, "dstDir/Month" $2}' | bash ; done
Немного форматирования:
for file in $(ls *.tif); do \
sed -r 's/(.*\.[0-9]{4})([0-9]{2})(.*)/\1 \2 \3/' <<< "$file" \
| awk '{print "mkdir -p dstDir/Month" $2 "; cp", $1 $2 $3, "dstDir/Month" $2}' \
| bash
done
Это требует для выполнения из каталога, содержащего ваши файлы (см. "ls * .tif). Вам также потребуется заменить" dstDir "на имя родительского каталога, в котором будет создан" Month01 ".
Это может не идеально, но вы можете отредактировать его, если требуется. Кроме того, если у вас нет bash, только zsh, замените бит «bash» на «zsh», все равно должно работать.