Переименуйте файл в Терминале Mac OS использование Regex

Вы могли сделать (с GNU grep):

grep -hEo "[[:alnum:]_'-]+" ./*.txt | sort | uniq -c | sort -rn

Изменение [:alnum:]_'- выше к тому, что должно быть составляющими слова.

5
29.11.2013, 20:02
2 ответа

Можно попробовать

for a in *.jpg ; do mv -- "$a" "${a:22:4}-${a:26:2}-${a:28:2} ${a:30:2}-${a:32:2}-${a:34:2}.jpg" ; done

Немного ужасный, но это должно сделать задание. Как всегда, удостоверьтесь, что протестировали на копии прежде.

5
27.01.2020, 20:39
  • 1
    Являются $ {a:22:4} подстроками? запустить в символе 22 и вытянуть 4 символа? –   29.11.2013, 20:11
  • 2
    Да они. Принятие, как в примере, что все строки отформатированы тот же путь. –  damienfrancois 29.11.2013, 20:15
  • 3
    Это работает, я смог к embedd это в свое действие папки Hazel.app, как предназначено.Спасибо. –   29.11.2013, 21:33

Если первая часть имен файлов не всегда имеет ту же длину, можно использовать для извлечения строки после второго _ и используйте первые 8 цифр для построения имени файла:

#!/usr/bin/env bash

for file in folder/*; do
    outName=$(awk -F"_" '{ print substr($3,1,4)"-"substr($3,5,2)"-"substr($3,7,2) }' <<< "${file}").jpg
    mv "${file}" "${outName}"
done
0
27.01.2020, 20:39

Теги

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