История изменений
Исправление Umberto, (текущая версия) :
Если плясать от того что есть 4 цифры + 2 + 2, и кроме расширения в имени нет точек, то как-то так.
#!/bin/bash
BCK_LIST="/any/path/to/log.list"
FIND_DIR="$1"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # test
echo -e "/some/path/admin-1_full-2013-10-16.tar.gz\n/some/sub/path/mysql-20130421.tar.gz\n/other/pth/1_hetzner_some_TEXT-2013-10-16.zip"| \
while read -r P;do
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # exec
# find "${FIND_DIR}" -type f \( -name "*.zip" -or -name "*.tar.gz" \) | while read -r P;do
FILE_DIR="${P%/*}"
REAL_NAME="${P##*/}"
EXTNS="${P#*.}"
NEW_NAME=`grep -Eo "[[:digit:]]{4}.*[[:digit:]]{2}"<<<"${REAL_NAME}"`
NEW_NAME=`sed -r 's/.{4}/&-/;s/.{7}/&-/;s/:$//'<<<"${NEW_NAME//[!0-9]}"`
echo -e "${P} \t >> \t ${FILE_DIR}/${NEW_NAME}.${EXTNS}" # Тестовый пуск
# echo -e "${P} ${FILE_DIR}/${NEW_NAME}.${EXTNS}" >> "${BCK_LIST}" # Записать лог перемещений
# mv ${P} {FILE_DIR}/${NEW_NAME}.${EXTNS} # << На свой страх и риск :3
done
/some/path/admin-1_full-2013-10-16.tar.gz >> /some/path/2013-10-16.tar.gz
/some/sub/path/mysql-20130421.tar.gz >> /some/sub/path/2013-04-21.tar.gz
/other/pth/1_hetzner_some_TEXT-2013-10-16.zip >> /other/pth/2013-10-16.zip
Ну там указать путь к логу перемещения, что раскоментировать, что закоментировать для запуска, думаю ясно.
Исправление Umberto, :
Если плясать от того что есть 4 цифры + 2 + 2, и кроме расширения в имени нет точек, то как-то так.
#!/bin/bash
BCK_LIST="/any/path/to/log.list"
FIND_DIR="$1"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # test
echo -e "/some/path/admin-1_full-2013-10-16.tar.gz\n/some/sub/path/mysql-20130421.tar.gz\n/other/pth/1_hetzner_some_TEXT-2013-10-16.zip"| \
while read -r P;do
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # exec
# find "${FIND_DIR}" -type f \( -name "*.zip" -or -name "*.tar.gz" \) | while read -r P;do
FILE_DIR="${P%/*}"
REAL_NAME="${P##*/}"
EXTNS="${P#*.}"
NEW_NAME=`egrep -Eo "[[:digit:]]{4}.*[[:digit:]]{2}"<<<"${REAL_NAME}"`
NEW_NAME=`sed -r 's/.{4}/&-/;s/.{7}/&-/;s/:$//'<<<"${NEW_NAME//[!0-9]}"`
echo -e "${P} \t >> \t ${FILE_DIR}/${NEW_NAME}.${EXTNS}" # Тестовый пуск
# echo -e "${P} ${FILE_DIR}/${NEW_NAME}.${EXTNS}" >> "${BCK_LIST}" # Записать лог перемещений
# mv ${P} {FILE_DIR}/${NEW_NAME}.${EXTNS} # << На свой страх и риск :3
done
/some/path/admin-1_full-2013-10-16.tar.gz >> /some/path/2013-10-16.tar.gz
/some/sub/path/mysql-20130421.tar.gz >> /some/sub/path/2013-04-21.tar.gz
/other/pth/1_hetzner_some_TEXT-2013-10-16.zip >> /other/pth/2013-10-16.zip
Ну там указать путь к логу перемещения, что раскоментировать, что закоментировать для запуска, думаю ясно.
Исходная версия Umberto, :
Если плясать от того что есть 4 цифры + 2 + 2, и кроме расширения в имени нет точек, то как-то так.
#!/bin/bash
BCK_LIST="/any/path/to/log.list"
FIND_DIR="$1"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # test
echo -e "/some/path/admin-1_full-2013-10-16.tar.gz\n/some/sub/path/mysql-20130421.tar.gz\n/other/pth/1_hetzner_some_TEXT-2013-10-16.zip"| \
while read -r P;do
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # exec
# find "${FIND_DIR}" -type f \( -name "*.zip" -or -name "*.tar.gz" \) | while read -r P;do
FILE_DIR="${P%/*}"
REAL_NAME="${P##*/}"
EXTNS="${P#*.}"
NEW_NAME=`egrep -Eo "[[:digit:]]{4}.*[[:digit:]]{2}"<<<"${REAL_NAME}"`
NEW_NAME=`sed -r 's/.{4}/&-/;s/.{7}/&-/;s/:$//'<<<"${NEW_NAME//[!0-9]}"`
echo -e "${P} \t >> \t ${FILE_DIR}/${NEW_NAME}.${EXTNS}" # Тестовый пуск
# echo -e "${P} ${FILE_DIR}/${NEW_NAME}.${EXTNS}" >> "${BCK_LIST}" # Записать лог перемещений
# mv ${P} {FILE_DIR}/${NEW_NAME}.${EXTNS} # << На свой страх и риск :3
done
/some/path/admin-1_full-2013-10-16.tar.gz >> /some/path/2013-10-16.tar.gz
/some/sub/path/mysql-20130421.tar.gz >> /some/sub/path/2013-04-21.tar.gz
/other/pth/1_hetzner_some_TEXT-2013-10-16.zip >> /other/pth/2013-10-16.zip