
Мне нужно переименовать следующие файлы. Я хочу удалить только .job-209675
те имена файлов, которые начинаются с , SOA
но оставить исходные имена файлов нетронутыми, так как в этом каталоге есть и другие файлы
например
До: ./SOA_990377897NW0001_1557340549734.xml.job-2074645
После:./SOA_990377897NW0001_1557340549734.xml
решение1
Если переменная filename
содержит имя одного из ваших файлов, то это ${filename%.job-*}
будет имя без бита после последней точки.
Чтобы перебрать имена файлов, переименовывая каждое из них по очереди,
for filename in SOA_*.job-*; do
echo mv -i "$filename" "${filename%.job-*}"
done
Для echo
защиты. Вам следует запустить цикл один раз и проверить вывод, а затем удалить, echo
если вы считаете, что он правильный. -i
Параметр mv
заставляет его запрашивать подтверждение перед перезаписью существующего файла.
Это предполагает, что все соответствующие файлы (и ничего больше) соответствуют шаблону SOA_*.job-*
.