У меня есть большое количество файлов, которые названы в формате: ABC_XYZ_123.jpg.Удалить все нечисловые символы в имени файла
Я хочу переименовать их навалом, чтобы получить формат: 123.jpg.
Как это сделать на Mac?
Спасибо!
У меня есть большое количество файлов, которые названы в формате: ABC_XYZ_123.jpg.Удалить все нечисловые символы в имени файла
Я хочу переименовать их навалом, чтобы получить формат: 123.jpg.
Как это сделать на Mac?
Спасибо!
Использование find
в терминале:
find . -type f -name "*_*_*.jpg" -execdir bash -c 'mv "$0" "${0##*_}"' {} \;
приведет ли:
ABC_XYZ_123.jpg -> 123.jpg
Спасибо! Это сработало! – ABZ
Итак, я пытаюсь понять, что делает mv "$ 0" "$ {0 ## * _}". Не могли бы вы объяснить мне это? Я хотел бы иметь возможность повторно использовать это, чтобы переименовать другие форматы имен. Благодаря! – ABZ
Это называется [расширение параметров оболочки] (https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html), и в основном происходит то, что переменная '$ 0' становится именем файла, который соответствует шаблону '* _ * _ *'. При использовании в фигурных скобках '$ {}' он работает как средство «на лету» для обработки строк. '## *' означает совпадение самого длинного шаблона, пока он не встретит '_', который будет удален. Я понимаю, что это звучит довольно сложно, хотя, как только вы используете его несколько раз, это имеет больше смысла; связанная страница содержит несколько полезных примеров, поэтому попробуйте их! –
Потому что я никогда не могу вспомнить командные строки кале, которые специализируются на такого рода вещи (как rename
) создать bash
скрипт, который делает задачу:
$ ls > x.sh
$ vi x. sh
Within VI
:
:%s/^[a-z_]*\(.*\)$/mv \0 \1/`
, а затем:
$ source x.sh
rename
может делать подобные, но, как я уже сказал, я никогда не удосужился его изучить.
$ brew install rename
Я не пробовал это, но спасибо! – ABZ
ли они все в одном каталоге, или есть иерархия? Может ли быть 'ABC_123.jpg', а также' DEF_123.jpg'? –