команда 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 .

  • mv файлы на другой путь, который создается с помощью замены регулярных выражений
  • Использование rename для удаления '.orig' из файла и добавления '_1' в basename
  • Переименование нескольких каталогов
  • Как получить команду find и rename для работы с подкаталогами?
  • Использование 'rename' и regex для редактирования имен файлов
  • Как переименовать несколько файлов, заменив строку в имени файла?
  • переименовывать файлы с помощью команды rename
  • Продолжает получать файлы сообщений одинаково, используя find
  • Удалить строку из имени файла, чтобы оставить переменную?
  • Переименование файлов и переход на другой путь
  • Shell Script для переименования текущего рабочего каталога с заданным именем
  • Interesting Posts

    Не может ssh на мой сервер из домашнего linux, но может ssh на тот же сервер из окон

    Защита паролем режима одиночного пользователя и GRUB на VPS

    В чем разница между двоичным файлом и библиотекой?

    Проблема с прокси в монетном дворе 16

    Могу ли я перенаправить вывод в файл журнала и выполнить фоновый процесс одновременно?

    Как узнать перед компиляцией, какие зависимости потребует пакет?

    (ubuntu 16.04) Как обнаружить независимое от устройства событие вставки USB

    Как заставить HDMI-аудио (интеллектуальную карту) активироваться, несмотря на то, что вы получили поврежденный EDID

    sed удалить начало строки с #, но не с #! (shell-скрипты)

    Заполнение вкладки ZSH: только полные файлы, а не двоичные файлы

    Как инициализировать глобальный, ассоциативный массив только для чтения в Bash?

    Удаление компонентов Gnome с помощью Packagename

    Баш-переменные – любые трюки с экстрактами, основанные на заказе?

    запустить tcpdump не до содержимого пакета interpert

    Замена многострочных последовательных тегов одной строкой с использованием sed и игнорирование пробелов

    Linux и Unix - лучшая ОС в мире.