Я должен получить md5sum имени файла каталога. Возможно, что-то вроде:
mv *.html md5sum(*).html
Кто-либо может указать на меня в правильном направлении относительно того, какую команду я должен выполнить, чтобы сделать это?
Возможно, что-то как:
for i in *.html
do
echo mv "$i" "$(md5sum <<<"${i%.html}" | awk '{print $1".html"}')"
done
${i%.html}
в ударе содержание переменной i
(текущее имя файла), с .html
удаленный из конца. awk '{print $1".html"}'
печатает первое поле вывода, с .html
добавленный к нему. Нам нужно это с тех пор md5sum
добавляет a -
к выводу, так как это читает в из стандартного входа:
$ md5sum <<<foo
d3b07384d113edec49eaa6238ad5ff00 -
$ md5sum <<<foo | awk '{print $1}'
d3b07384d113edec49eaa6238ad5ff00
Пример:
$ for i in *.html
do
echo mv "$i" "$(md5sum <<<"${i%.html}" | awk '{print $1".html"}')"
done
mv default.html de2b14ae7499f90736fc4a92327553a5.html
mv page.html 2adf521149526dde524f030851c7f903.html
mv post.html 0c0d03edf4e145ffd75eafb6d73deaa7.html
Удалите echo
для фактического перемещения файлов, после того как Вы проверили, команда хорошо работает.
Если Вы хотите эффект echo -n
, можно использовать это вместо этого:
for i in *.html
do
echo mv "$i" "$(echo -n "${i%.html}" | md5sum | awk '{print $1".html"}')"
done