Скрипт для копирования файлов из папки и добавления md5sum в новое имя файла

Я хотел бы знать, возможно ли это:

У меня есть большое количество файлов .mov в папке. Я хотел бы знать, могу ли я копировать файлы в отдельную папку, но включать md5sum в новые имена файлов, после фактического имени, но до расширения файла. Так, например, если один раз из файлов был назван johnnycash.mov я бы хотел, чтобы он выглядел примерно так: johnnycash_8cbda72b2ce62f4a69a0b454ccccbe4.mov

Я noobie и такие вещи, возможно, немного выше моего уровня, но я был бы признателен, если бы у кого-нибудь было приемлемое решение.

Ура!

3 Solutions collect form web for “Скрипт для копирования файлов из папки и добавления md5sum в новое имя файла”

Вероятно, эта проблема лучше всего подходит в два этапа:

  1. Скопируйте файлы в новую папку
  2. Переименуйте их в соответствии с их md5sums

Шаг 1 легко:

 cp -r folder_with_movs new_folder 

Шаг 2 требует немного скриптов:

 cd new_folder for i in *.mov; do bn="${i%.*}" ext="${i##*.}" md5=$(md5sum "$i" | awk '{ print $1 }') mv -v "$i" "${bn}_${md5}.${ext}" done 

Поскольку есть только расширения «.mov», это делает его несколько проще, чем ловить все возможные расширения:

 for file in *.mov; do SUM=$(md5sum "$file" | awk '{print $1}') cp "$file" <destination>/$(echo "$file" | sed -e "s/.mov/_${SUM}.mov/") done 

Сделайте цикл над всеми файлами mov.

Вычислите md5sum, возьмите только первый столбец из вывода (этот запрос awk всегда пригодится, теперь вы его видели)

Скопируйте файл в новый пункт назначения при выполнении некоторого переименования: sed обменивает суффикс «.mov» со строкой «_», затем md5sum, а затем расширение «.mov», поэтому оно будет сохранено.

Имейте в виду пробелы в именах файлов (лучше избегайте их).

Это может сработать. Его очень грубая но будет перемещать ваши вещи с md5sum по имени файла ..

 #!/bin/bash CURRENTDIRECTORY=xxx NEWDIRECTORY=xxx for i in `ls $CURRENTDIRECTORY`; do if [ -f $i ]; then md5=`md5sum $i | awk '{print $1}'` name=$md5-$i cp $i $NEWDIRECTORY/$name fi done 
  • Как добавить / удалить задания cron по сценарию?
  • Как передать второй аргумент в функции bash
  • Как удалить папки, созданные с именами дат 2016-04-03 до 2016-10-4
  • Как вызвать функции Matlab в bash, когда пользовательский ввод является операндом
  • Shell Scripting: вычислить мощность числа с реальным числом в качестве показателя
  • Сохранение строк повторяется определенное количество раз
  • Как выполнить задание cron с циклическим аргументом?
  • Поток FFMPEG не появится на Justin.tv
  • Что делает «while test $ # -gt 0»?
  • Почему эти бомбы вилки-ракеты работают по-разному, и каково значение & в ней?
  • Скрипт для перезапуска сети
  • Interesting Posts

    Соединения между Windows 10 и Linux Server

    Установка Debian не загружается после установки драйверов Nvidia

    Если двойной загрузочный Linux с окнами 8, я все равно смогу перейти на Windows 10

    Аутентификация на основе ключей от PyCharm / JSCH до OpenBSD не выполняется

    Что черт переопределяет мой путь в SSH?

    Как правильно проверить расширение файла в инструкции if?

    Управление Mac Mini с Linux Mint с TeamViewer – Некоторые специальные клавиши не работают

    Проблема с кодировкой: приложения Qt удаляют все символы без ASCII из файлов

    Отправка вывода из 'dd' в awk / sed / grep

    apt-get не находит phpldapadmin в Debian 9 (Stretch)

    Как сознательно активировать охлаждающий вентилятор ноутбука?

    Сделать докерные контейнеры доступными через vpn

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

    Функции безопасности, отключенные DCO – как разморозить и восстановить?

    Как применить снимок qcow2 для наложения необработанного образа диска?

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