команда find / rename не работает

Я использую Linux Slackware 14.0, bash 4.2. Предположим, у меня есть 2 файла в каталоге:

bash-4.2$ ls 1.txt 2.txt 

Я хочу переименовать их в .svg. Этот ответ принят и одобрен, поэтому, я думаю, он должен работать. Он использовал эту команду:

 find . -name "*.andnav" -exec rename -v 's/\.andnav$/\.tile/i' {} \; 

Итак, я написал аналогичную команду, но напечатал ошибку:

 bash-4.2$ find . -name "*.txt" -exec rename -v 's/\.txt$/\.svg/i' {} \; rename: not enough arguments 

Когда я хочу просто распечатать файлы, он работает:

 bash-4.2$ find . -name "*.txt" -print ./1.txt ./2.txt 

Я знаю, что я могу переименовать с более простым подходом:

 bash-4.2$ rename .txt .svg ./*.txt bash-4.2$ ls 1.svg 2.svg 

Но почему команда из этого ответа не работает для меня?

One Solution collect form web for “команда find / rename не работает”

Есть две команды, называемые rename в дистрибутивах Linux. В базовых утилит Linux используется один из них:

 rename SUBSTRING REPLACEMENT FILE... 

Эта команда заменяет первое вхождение SUBSTRING посредством ЗАМЕНЫ в каждом из указанных файлов. Он поддерживает только простые строки, а не подстановочные знаки или регулярные выражения. В Debian и производных (Ubuntu, Mint и т. Д.) Эта команда называется rename.ul . В других дистрибутивах Linux это называется rename .

Существует также Perl-скрипт под названием rename который используется следующим образом:

 rename 'PERL CODE' FILE... 

Общей формой Perl-кода является rename 's/REGEXP/REPLACEMENT/' FILE... , которое заменяет первое вхождение REGEXP посредством ЗАМЕНЫ в каждом имени файла ( s/REGEXP/REPLACEMENT/g заменяет все вхождения).

Автор вопроса, который вы видели, указал, что он запускает Ubuntu, поэтому он принял этот ответ, используя команду rename найденную в Ubuntu.

Аналогом для стандартной команды rename является

 find . -name "*.txt" -exec rename .txt .svg {} \; 

С bash ≥4 вы можете использовать шаблон шаблона ** после установки опции globstar для соответствия файлам в подкаталогах без использования find .

 shopt -s globstar rename .txt .svg **/*.txt 

Помните, что эта команда rename действует на первую строку, поэтому, если у вас есть файл hello.txt.world.txt , он будет переименован в hello.svg.world.txt .

  • Переименование файлов в сценарии bash
  • Сгруппировать каталог, но сохранить имена каталогов в новом имени файла
  • Разделить имена файлов и переименовать
  • Вычтите 1 из всех имен файлов (переименуйте их) в каталог.
  • Каков наиболее эффективный способ перемещения большого количества файлов, которые находятся в одном каталоге?
  • Рекурсивно переименуйте файлы электронной почты из .txt в .eml
  • Для всех каталогов - переименовать все подкаталоги с префиксом
  • Что делает mv в случае ошибок?
  • Как переименовать несколько файлов с помощью сценария оболочки?
  • Может ли два файла в каталоге находиться в разных файловых системах
  • Найти и заменить строку в именах каталогов
  • Linux и Unix - лучшая ОС в мире.