Intereting Posts
Время доступа не обновляется, когда я запускаю `ls a`, а затем` stat a` Существуют ли дополнительные способы защиты SSH-соединений, помимо брандмауэра и RSA-ключей? Как удалить файлы одинакового размера в каталоге? Переменная среды не расширена внутри аргумента командной строки Прослушивание устройства крана для пакетов, написанных через дескриптор файла Перенаправление после запуска процесса Запись структуры каталогов из stdin-канала Усекать при необходимости при перемещении файла в файловую систему с более коротким NAME_MAX Общие IRQ не работают должным образом Добавить расширение файла в файлы, которые не имеют расширения сократить длинные строки в файле журнала Доступ к флэш-накопителю NVMe в апреле 2016 года MacBook 12 "(A1534) Почему dhclient делает DHCP-запросы на статическом интерфейсе? openvpn –config conf.ovpn приводит к ответам «RTNETLINK: файл существует» Передача имени файла скриптам с функцией автозаполнения

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

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

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

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

Ура!

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

  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