У меня есть подпапки с тире (пример подкаталога с именем 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"
Нет никакого случая для, переименовывают, потому что можно просто сделать это с 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 не имеют никаких лошадей в этой гонке.
Вы неясны о том, как Вы хотите файлы к переименованному. До которого файлы переименовать Вас могут использовать find
соответствовать всем файлам согласно Вам желаемый шаблон, содержащий тире:
find [PATH...] -type f -name '*-*' | prename EXPR
Если Вы хотите соответствовать каталогам также, необходимо использовать -depth
опция:
find [PATH...] -depth -name '*-*' | prename EXPR
Я просто попробовал это на подпапках с тире на их имя, и оно работало.
Для переименования файлов Вы используете команду находки в сочетании с переименовать командой как это:
find -type f -execdir rename 's/OriginalText/NewText/' *.jpg '{}' \;
Таким образом, если бы Вы хотите заменить всех тире "-" во всех jpg именах файлов с символами нижнего подчеркивания "_" затем Вы вошли бы:
find -type f -execdir rename 's/-/_/' *.jpg '{}' \;