У меня есть несколько каталогов и подкаталогов, содержащих файлы без расширения. Я хочу добавить .jpg
ко всем файлам, содержащимся в этих каталогах. Я видел сценарии bash для изменения расширения файла, но не просто для его добавления. Он также должен быть рекурсивным, может кто-нибудь помочь?
bash
file
shell
command-line
file-extension
Robjmills
источник
источник
for
цикл, нарушающий bash, чтобы перебирать список файлов, это неверно. Цикл bashfor
итеративно выдает каждуюmv
команду.find
сначала список файлов перед выполнением-exec
оператора? Думаю, да, но я хочу прояснить этот момент перед написанием бесконечных циклов.-not -name "*.*"
поможет.это найдет файлы без расширения и добавит ваш .jpg
источник
Это немного поздно, но я подумал, что добавлю лучшее решение (хотя, возможно, менее читаемое), чем те, которые были до сих пор:
Использование
find | xargs
шаблона обычно приводит к более эффективному выполнению, поскольку вам не нужно создавать новый процесс для каждого файла.Обратите внимание, что для этого требуется версия переименования, которая есть в дистрибутивах со вкусом Debian (также известная как prename), а не традиционное переименование. Однако это всего лишь крошечный сценарий Perl, поэтому было бы достаточно легко использовать приведенную выше команду в любой системе.
источник
как это,
Я не ожидаю, что у вас есть имена файлов, разделенные пробелами.
Если вы это сделаете, имена нужно будет немного обработать.
Если вы хотите , чтобы выполнить команду из другого каталога,
вы можете заменить
find .
сfind /target/directory
.источник
-type
.Для переименования всех файлов без расширения в Windows basic вы можете сделать.
ren * *.jpg
Поскольку файл без расширения, просто используйте *, или, если вы хотите изменить png на jpg, используйтеren *.png *.jpg
источник
rename
не уверен, что он может переименовывать файлы без расширений (сейчас я на Windows 7)
источник
rename
, одна из которых - программа на языке C, включенная в util-linux-ng, а другая - программа Perl (созданная самим Уоллом) на машинах Debian нашего университета. На самом деле ни один из них не выполняет рекурсию.