Хобрук: Ваш путь к мастерству в программировании

Измените имена файлов на нижний регистр в Ubuntu во всех подкаталогах

Я знаю, что об этом спрашивали, но то, что я нашел, пока не сработало. Шкаф, в который я пришел, таков: rename -n 'y[A-Z]/[a-z]/' *, который работает для текущего каталога. Я не слишком хорошо разбираюсь в терминале Linux, так что мне добавить к этой команде, чтобы применить ее ко всем файлам во всех подкаталогах, в которых я нахожусь, спасибо!


  • Это закрыто как не по теме, но у него есть лучший ответ, который я нашел на этот точный вопрос. Где это лучше подходит, и существует ли это там? 30.09.2014
  • @AndrewLott unix.SE или superuser.com 05.07.2017

Ответы:


1

Вот один из способов использования find и tr:

for i in $(find . -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done

Редактировать; добавлено: -name "*[A-Z]*"

Это гарантирует, что будут найдены только файлы с заглавными буквами. Например, если файлы, содержащие только буквы нижнего регистра, будут найдены и перемещены в тот же файл, mv отобразит ошибку are the same file.

24.10.2012
  • Я собираюсь попробовать это, но я только что обратил внимание на то, что вызовы require в файлах php имеют верхний и нижний регистр в тонне файлов. Есть ли способ отключить чувствительность к регистру в Ubuntu? 24.10.2012
  • Нет. Файловые системы Unix чувствительны к регистру, нет возможности отключить его. Я полагаю, вы могли бы запустить свое приложение из файловой системы FAT32 в качестве обходного пути, но если в вашем исходном коде есть ошибки, их нужно будет исправить вручную. 24.10.2012
  • Это не работает, если каталог содержит символы верхнего регистра; mv терпит неудачу, так как новый пункт назначения не существует 11.09.2015
  • Вы также должны добавить предупреждение о том, что это удаляет некоторые файлы, если они имеют одинаковое имя (например, Foo против FOO). В идеале, в этом случае должно быть выдано предупреждение. 11.12.2015
  • Кроме того, для того, чтобы это работало с пробелами, оно должно быть IFS=$'\n' && for i in $(find . -type f -name "*[A-Z]*"); do echo "$i" "$(echo "$i" | tr A-Z a-z)"; done ; unset IFS 11.12.2015

  • 2

    В Perl есть функция lc() с учетом локали, которая может работать лучше:

    find . -type f | perl -n -e 'chomp; system("mv", $_, lc($_))'
    

    Обратите внимание, что этот скрипт обрабатывает пробелы в именах файлов, но не новые строки. И нет никакой защиты от столкновений, если у вас есть "ASDF.txt" и "asdf.txt", один будет затерт.

    24.10.2012
    Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...