kruchkov-alexandr
@kruchkov-alexandr
VSAT engineer

Bash, rename files. Как в регулярку добавить отрицание?

Задача:
есть папка, в ней есть большое количество файлов вида 9878970.txt и 8798_8798.txt

В эту папку постоянно добавляются новые файлы, частенько попадаются совпадения. Необходимо чтобы все версии файлов, даже одинаковые были сохранены.
Принято решение написать скрипт, который раз в 1 минуту проверет папку, переименовывает файлы по маске, добавляя в начало файла нижнее подчеркивание и дату.

Скрипт написал, но он так же переименовывает уже переименованные файлы.
Как добавить в регулярку, чтобы он НЕ переименовывал файлы, начинающие на _ ?
Для этого я даже переменную DATA1 создал.

root@slowpoke:/home/slowpoke/scripts/RRR# rm *.txt | touch 555.txt 666.txt
root@slowpoke:/home/slowpoke/scripts/RRR#
root@slowpoke:/home/slowpoke/scripts/RRR# ls
555.txt 666.txt rrr
root@slowpoke:/home/slowpoke/scripts/RRR#


#!/bin/bash
cd /home/slowpoke/scripts/RRR/

DATA=`date +%Y-%d-%m`
DATA1=_$DATA

A='s/(^.*)\.txt$/'
B='_$1\.txt/'

STRING=$A$DATA1$B
rename -v $STRING *.txt
  • Вопрос задан
  • 598 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Вместо того, чтобы отфильтровывать лишнее, не брать лишнее совсем:
rename -v $STRING [0-9]*.txt
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kir_vesp
Web Developer
Правильнее будет так поставить вопрос: "Как исключить файлы, у которых в названии есть данная подстрока". А тут уже всё просто. Задайте, чтобы символы данной подстроки НЕ встречались в вашей строке. Можно использовать конструкцию вида: "[^некоторые_символы]".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы