Массовое изменение имен файлов?

Массовое изменение имен файлов?

У меня проблема с тем, как изменить порядок имен файлов sac. Я имею в виду, что у меня есть этот порядок, но мне нужно изменить его на второй, и эти команды должны быть в скрипте. Кроме того, это изменение должно быть сделано с использованием номеров столбцов.

СТАРЫЙ

2007.084.00.22.50.8930_2007.084.01.26.10.1430.GE.ISP..BHZ.D.SAC
2007.084.00.22.51.2930_2007.084.01.26.54.8430.GE.ISP..BHN.D.SAC
2007.084.00.25.42.9430_2007.084.01.27.59.2430.GE.ISP..BHE.D.SAC

НОВЫЙ

2007.084.01.26.10.1430_2007.084.00.22.50.8930.GE.ISP..BHZ.D.SAC
2007.084.01.26.54.8430_2007.084.00.22.51.2930.GE.ISP..BHN.D.SAC
2007.084.01.27.59.2430_2007.084.00.25.42.9430.GE.ISP..BHE.D.SAC

Позвольте мне написать код, который я попытаюсь завершить таким образом (если ответы будут такими, это будет для меня более полезно), и я не знаю, как продолжить завершать этот процесс.

#!/bin/bash

for sacfile in *SAC
do

echo $sacfile
n2=`echo $sacfile | cut -c 24-45`
echo $n2

done 

решение1

Если предположить, что имена файлов имеют фиксированную длину, то это должно сработать.

#!/bin/bash

for sacfile in *SAC
do
    new_sacfile=${sacfile:23:22}_${sacfile:0:22}${sacfile:45}
    echo mv -v ${sacfile} ${new_sacfile}
done 

Мы используемвстроенная в bash манипуляция переменнымичтобы сократить имя файла и перестроить его по нашему желанию. Когда вы будете довольны, вы можете удалить эхо перед mvоператором

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