
Копаясь в расширенных настройках Dropbox, я потерял папку. Я обнаружил это только примерно через месяц. Мне удалось вернуть эту папку из Dropbox, однако файловая структура подпапок кардинально изменилась. Текущая папка теперь содержит две версии каждой исходной подпапки. В настоящее время она выглядит так:
folder
/folder1
/folder11
/folder111
/Folder111
/file1111
/file1112
/file1113
/Folder11
/file111
/file112
/folder12
/Folder12
/folder2
/folder3
Итак, у меня есть подпапки в нижнем регистре и подпапки BumpyCase. Подпапки в нижнем регистре содержат подпапки, а подпапки BumpyCase содержат файлы. Подпапки снова содержат версию своих подпапок в нижнем регистре и в BumpyCase. И эта история продолжается на несколько уровней в глубину.
К счастью, в файлах нет дубликатов, только в папках (те же буквы, но разный регистр). Поэтому на каждом уровне мне нужно объединить папки, которые отличаются только регистром имен. И чтобы сделать это правильно, мне нужно начать с самого глубокого уровня и дойти до папки верхнего уровня.
Я хочу, чтобы все было сохранено в каталогах CamelCase.
Раздел, где находятся данные, — это раздел Ext4. У меня есть доступ к нескольким разделам NTFS.
Есть ли удобная команда/инструмент Linux или кто-то с идеей скрипта, который мог бы это сделать? Я уже очень рад, что вернул свои вещи, но текущая структура — это большое неудобство.
решение1
У меня была та же проблема, и я нашел практичное решение.
Просто зайдите в свою учетную запись Dropbox, переименуйте корневые папки, используя строчные буквы, и загрузите их снова!
Я читаюв другом местечто у Dropbox есть проблема с папками и нечувствительностью к регистру. Я не уверен, что наличие заглавных букв в именах папок было единственной проблемой. У меня были другие проблемы, которые могут повлиять на файловую систему Dropbox, помимо папок с заглавными буквами, например, при предоставлении общего доступа к папкам с Mac и попытке загрузить их на машину Ubuntu. Но проблема, которую я обнаружил, была похожа на ту, о которой сообщалось здесь. Все папки были правильно видны на веб-сервере, но при загрузке все папки, начинающиеся с заглавной буквы, были продублированы, и часть содержимого попала в папки с заглавными буквами, а часть — в папки со строчными, поэтому я искал способ объединить эти папки.
решение2
Все команды начинаются с каталога верхнего уровня и предполагают, что в именах файлов нет новых строк. Я предполагаю инструменты GNU (Linux или Cygwin). Внимание, это непроверенный код, набранный непосредственно в браузере.
Довольно просто объединить все каталоги в нижний регистр. Один из подходов — рекурсивно пройти по всем каталогам и объединить их в их аналог в нижнем регистре. Сначала выполните обход глубины, чтобы при объединении двух каталогов их содержимое уже было нормализовано.
find . -depth -name '*[[:upper:]]*' -type d -execdir sh -c '
source=$0
target=$(echo "$source" | tr "[:upper:]" "[:lower:]")
if [ "$source" != "$target" ]; then # need to rename or merge
if [ -d "$target" ]; then
# merge $source (mixed- or uppercase) into $target (lowercase)
find "$source" -mindepth 1 -maxdepth 1 -exec mv -bt "$target" {} +
rmdir "$source"
else
mv "$source" "$target"
fi
fi
' {} \;
Если вы хотите объединить строчные и смешанные регистры, вам нужно определить смешанный каталог, соответствующий каждому строчному каталогу. Следующий фрагмент выбирает произвольный смешанный каталог, если их больше одного.
find . -depth ! -name '*[[:upper:]]*' -type d -execdir sh -c '
source=$0
target=$(find . -maxdepth 1 -iname "$source" -not -name "$source" -print -quit)
if [ -n "$target" ]; then …
fi
' {} \;