измените несколько имя файла со сценарием и используйте предыдущие имена

Я хочу изменить несколько имен файлов с их предыдущими именами с помощью сценария, например, изменить имена файлов как указано ниже:

2015-08-25___LSA_SP_E_txt ---> 20150825.IT.SPE.LSA.txt 
2015-08-25___HSB_BH_Z_txt ---> 20150825.IT.BHZ.HSB.txt 
2015-08-25___TEH_SP_N_txt ---> 20150825.IT.SPN.TEH.txt 
2015-08-25___ANJ_BH_E_txt ---> 20150825.IT.BHE.ANJ.txt 
-2
задан 13 February 2018 в 05:59

2 ответа

Один путь с rename:

rename -n 's/-//g;s/___(\w*)_(\w*)_(\w*)_/.IT.$2$3.$1./' *

В -nрежим ono это только печатает изменения, удаляют этот флаг для выполнения переименования. Первое выражение просто удаляет каждый дефис, второй сохраняет строки и заменяет часть подчеркивания.

Альтернатива должна сохранить просто все, в чем Вы нуждаетесь в группах, этот способ, которым можно также быстро измениться, например, дата:

rename -n 's/(\d*)-(\d*)-(\d*)___(\w*)_(\w*)_(\w*)_/$1$2$3.IT.$5$6.$4./' *

Пример выполняется

$ rename -n 's/-//g;s/___(\w*)_(\w*)_(\w*)_/.IT.$2$3.$1./' *
rename(2015-08-25___ANJ_BH_E_txt, 20150825.IT.BHE.ANJ.txt)
rename(2015-08-25___HSB_BH_Z_txt, 20150825.IT.BHZ.HSB.txt)
rename(2015-08-25___LSA_SP_E_txt, 20150825.IT.SPE.LSA.txt)
rename(2015-08-25___TEH_SP_N_txt, 20150825.IT.SPN.TEH.txt)
2
ответ дан 31 October 2019 в 00:48

Скрипт Bash (script.sh) для переименования нескольких файлов.

#!/bin/bash
INPUT="$1"
IFS=,
[ ! -f "$INPUT" ] && { echo "$INPUT file not found"; exit 99; }
while read old_name new_name
do
rename "$old_name" "$new_name" # mv or rename
done < "$INPUT"

Формат файла Input.txt:

old_name1.txt,new_name1.txt
old_name2.txt,new_name2.txt

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

bash script.sh input.txt
2
ответ дан 31 October 2019 в 00:48

Другие вопросы по тегам:

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