Как определить типы файлов в каталоге и добавить или заменить их расширения файла.

find "$(realpath .)" -type f -exec bash -c 'p="{}"; b="${p##*/}"; e=${b#"${b%.*}"}; e2=$(file -b -F="" --extension "$p"| awk -F/ '\''$1~/^\w+$/ {print $1} '\''); if [ "$e" != ".$e2" ] && [ ! -z $e2 ]; then mv "$p" "${p%$b}${b%$e}.$e2"; fi;' \;


Команда find используется для поиска файлов и директорий в заданном каталоге и выполнения определенных действий над ними. В данном случае, команда ищет все файлы в текущем каталоге и его подкаталогах, затем использует exec для выполнения команды в фоновом режиме для каждого найденного файла.

Пояснение команды, передаваемой в exec:
1. Переменная «p» хранит полный путь к найденному файлу.
2. Переменная «b» извлекает только имя файла (без пути).
3. Переменная «e» хранит расширение файла (без точки).
4. Переменная «e2» использует команду file для определения типа файла и извлекает его расширение.
5. Если расширение файла «e» не совпадает с расширением «e2» и «e2» не пустой, выполняется переименование файла с добавлением или заменой расширения на «e2».

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

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *