Как переименовать все файлы .jpg во всех подкаталогах, содержащих тире, в linux? [закрыто]

У меня есть подпапки с тире (пример подкаталога с именем cd). Мне нужно переименовать все файлы .jpg во всех подкаталогах. Любые советы, как это сделать Я пробовал много вариантов, но ничего не помогло (я думаю, потому что мои подпапки содержат тире -) Спасибо, ребята! :)

Я пробовал

find -name '*.jpg' -exec rename $RANDOM.jpg $RANDOM.jpg {} \;

, но получил

(Missing operator before jpg?) syntax error at (user-supplied code)
line 3, near "2635.jpg" Bareword found where operator expected at
(eval 4) line 1, near "#line 1 2635.jpg"
-1
задан 6 February 2018 в 17:28

3 ответа

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

find -name '*.jpg' -exec bash -c 'mv -i "{}" "$RANDOM.jpg"' \;

mv-i интерактивные средства. Это спрашивает перед перезаписью.

Это не testet подробно, просто для данного случая, чтобы удостовериться, что файлы получат различные имена. Немного больше тестирования было бы:

find -name '*.jpg' -exec echo bash -c 'mv -i "{}" "$RANDOM.jpg"' \;

Однако это поместит все файлы в текущий dir. Возможно, использование-execdir является опцией?

find -name '*.jpg' -execdir bash -c 'mv -i "{}" "$RANDOM.jpg"' \;

Однако сделайте резервное копирование, быть осторожными относительно Ваших данных и так далее. Массовые акции с находкой являются острым инструментом. Я не беру на себя ответственности.

Тире AFAIK не имеют никаких лошадей в этой гонке.

2
ответ дан 31 October 2019 в 01:46

Вы неясны о том, как Вы хотите файлы к переименованному. До которого файлы переименовать Вас могут использовать find соответствовать всем файлам согласно Вам желаемый шаблон, содержащий тире:

find [PATH...] -type f -name '*-*' | prename EXPR

Если Вы хотите соответствовать каталогам также, необходимо использовать -depth опция:

find [PATH...] -depth -name '*-*' | prename EXPR
0
ответ дан 31 October 2019 в 01:46

Я просто попробовал это на подпапках с тире на их имя, и оно работало.

Переименование частей имен файлов Recusively в Linux/Ubuntu

Для переименования файлов Вы используете команду находки в сочетании с переименовать командой как это:

find -type f -execdir rename 's/OriginalText/NewText/' *.jpg '{}' \;

Таким образом, если бы Вы хотите заменить всех тире "-" во всех jpg именах файлов с символами нижнего подчеркивания "_" затем Вы вошли бы:

find -type f -execdir rename 's/-/_/' *.jpg '{}' \;
0
ответ дан 31 October 2019 в 01:46

Другие вопросы по тегам:

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