У меня есть папка с большим количеством файлов, имеющих шаблон, который некоторые строки следуют дата и время:Extract часть имени файла в Баш
BOS_CRM_SUS_20130101_10-00-10.csv (3 strings before date)
SEL_DMD_20141224_10-00-11.csv (2 strings before date)
SEL_DMD_SOUS_20141224_10-00-10.csv (3 strings before date)
Я хочу перебрать папку и выписки только часть перед датой и вывод в файл.
Output
BOS_CRM_SUS_
SEL_DMD_
SEL_DMD_SOUS_
Это мой сценарий, но он не работает
#!/bin/bash
# script variables
FOLDER=/app/list/l088app5304d1/socles/Data/LEMREC/infa_shared/Shell/Check_Header_T24/
LOG_FILE=/app/list/l088app5304d1/socles/Data/LEMREC/infa_shared/Shell/Check_Header_T24/log
echo "Starting the programme at: $(date)" >> $LOG_FILE
# Getting part of the file name from FOLDER
for file in `ls $FOLDER/*.csv`
do
mv "${file}" "${file/date +%Y%m%d HH:MM:SS}" 2>&1 | tee -a $LOG_FILE
done #> $LOG_FILE
'Эхо BOS_CRM_SUS_20130101_10-00-10.csv | sed -r 's/(.*) 20 [01] [0-9]. */\ 1 /' ' – anishsane
Шаблон в' $ {file/pattern/replace} 'является шаблоном глобирования имени файла, а не оболочкой команда. – Barmar
Вы можете пойти и изменить свой цикл на 'для файла в« $ FOLDER »/ *. Csv' –