Как изменить порядок и удалить имена файлов

Установитьsyslog-ng:

apt-get install syslog-ng
0
01.07.2021, 04:16
2 ответа

Используя файл на основе perl --, переименуйте (из пакета Ubunturename):

$ rename -n 's/_\d+_/_/' *.dcm
rename(279796_3D AXL MPR_26438044_0001.dcm, 279796_3D AXL MPR_0001.dcm)
rename(279796_3D AXL MPR_26438446_0011.dcm, 279796_3D AXL MPR_0011.dcm)

Использованиеmmv:

$ mmv -n '*_*_*_*.dcm' '#1_#2_#4.dcm'
279796_3D AXL MPR_26438044_0001.dcm -> 279796_3D AXL MPR_0001.dcm
279796_3D AXL MPR_26438446_0011.dcm -> 279796_3D AXL MPR_0011.dcm

Удалите -n, как только убедитесь, что он работает правильно.

Использование оболочки bash с расширенной подстановкой в ​​стиле KSH -:

$ shopt -s extglob

$ for f in *.dcm; do echo mv -n -- "$f" "${f/_+([0-9])_/_}"; done
mv -n -- 279796_3D AXL MPR_26438044_0001.dcm 279796_3D AXL MPR_0001.dcm
mv -n -- 279796_3D AXL MPR_26438446_0011.dcm 279796_3D AXL MPR_0011.dcm    

Удалите echo, как только убедитесь, что он работает правильно.

1
28.07.2021, 11:21

Вызов cutдолжен помочь:

cut -d_ -f-2,4-

проверьте это с помощью:

echo "279796_MPR_26438044_0001.dcm" | cut -d_ -f-2,4-

Использование его для переименования группы файлов становится:

for f in *.dcm; do mv "$f" "$(echo "$f" | cut -d_ -f-2,4-)"; done

cutразделить слово на каждое вхождение разделителя_(-d _)и вывести поле с первого на второе(-f-2)и с четвертого на последнее(,-4-).

0
28.07.2021, 11:21

Теги

Похожие вопросы