У меня есть большие образцы в папке с plain names and file names with spaces also
и я хочу переименовать все файлы в соответствующий md5sum.
Я пробовал эту логику for f in $(find /home/SomeFolder/ -type f) ;do mv "$f" "$(md5sum $f)";done
Но это не работает должным образом с некоторой ошибкой, такой как mv: cannot move to
указав нет такого каталога.
Также я попробовал эту логику Переименование файлов в md5 sum + extension (BASH) и попробовал это for f in $(find /home/Testing/ -type f) ;do echo
md5sum $ f;mv $f /home/Testing/"echo
md5sum $ f« «; сделано;
`
Но это не работает.
Любые предложения, чтобы решить эту проблему.
Я хочу заменить файл на его имя md5sum без каких-либо расширений
sample.zip --> c75b5e2ca63adb462f4bb941e0c9f509
c75b5e2ca63adb462f4bb941e0c9f509c75b5e2ca63adb462f --> c75b5e2ca63adb462f4bb941e0c9f509
file name with spaces.php --> a75b5e2ca63adb462f4bb941e0c9f509
Узнайте, почему вы не должны анализировать вывод
ls
или жеfind
в цикле, ParsingLs,
Если у вас есть file names with spaces also
рекомендую использовать -print0
вариант GNU findutils
за работу, которая встраивает \0
символ после имени файла с read
с нулевым разделителем, как показано ниже.
Запустите скрипт ниже /home/SomeFolder
и использовать поиск из текущего каталога как
#!/bin/bash
while IFS= read -r -d '' file
do
mv -v "$file" "$(md5sum $file | cut -d ' ' -f 1)"done< <(find . -mindepth 1 -maxdepth 1 -type f -print0)
Параметры глубины обеспечивают текущую папку .
не входит в результат поиска. Теперь вы получите все файлы в вашем текущем каталоге (помните, что он не просматривается в подкаталогах) и переименует ваш файл с помощью md5sum
из имен файлов.
-v
флаг в mv
предназначен для подробного вывода (который вы можете удалить), чтобы увидеть, как файлы должны быть переименованы в.
Почему бы не использовать скрипт php, что-то вроде ниже будет работать. Это позволит просмотреть все файлы, переименовать их, а затем в случае успеха удалить старый файл.
$path = '';
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if (substr($file, 0, 1) == '.') {
continue;
}
if (rename($path . $file, $path . md5($file)))
{
unlink($path . $file);
}
}
closedir($handle);
}