У меня огромное дерево файлов. Некоторые файлы имеют одинаковые имена, но в другом случае, например, some_code.c
и Some_Code.c
.
Поэтому, когда я пытаюсь скопировать его в файловую систему NTFS / FAT, он спрашивает меня, хочу ли я заменить файл или пропустить его.
Есть ли способ автоматически переименовать такие файлы, например, добавив (1)
к имени файла конфликта (как это делает Windows 7)?
sudo fdisk -l /dev/sda
), и сделалtouch foo; touch Foo
и закончил двумя файламиfoo
иFoo
. Но мне не интересно, достаточно ли перезагрузиться в Windows, чтобы посмотреть, как они там выглядят. Migth это просто FAT-проблема? Ах, у меня есть USB-флешка с файловой системой FAT, и я могу создать FAT-систему внутри файла ... - пожалуйста, один момент. :)Ответы:
Многие инструменты GNU , такие как
cp
,mv
иtar
поддержка создания резервных копий файлов , когда цель существует. То есть, при копированииfoo
вbar
, если уже существует файл с именемbar
, существующийbar
будет переименован, а после копииbar
будет содержать содержимоеfoo
. По умолчаниюbar
переименовывается вbar~
, но поведение может быть изменено:Существуют и другие варианты, например создание пронумерованных резервных копий, только если они уже существуют. Смотрите руководство coreutils для более подробной информации.
источник
brew install coreutils
и затем используйте командуgcp
вместо этого.Я пытался
чтобы найти возможных кандидатов, и Макопи обнаружился.
показывает перспективный вариант
-D clash-option
, разве это не круто? Но не так круто - это не описано. Но есть некоторые намеки на mtools.dvi, который я искал в своей системе, но безуспешно и через Google, но безуспешно, но затем, с помощью Google, я искал непосредственноmcopy clash-option
и нашел этот сайт .Я сделал короткий тест
для проверки на autorename и targettdir
a
- вместо автоматического переименования он спрашивал меня о каждом файле, чтобы игнорировать или переопределять, это глупое s ....Моя версия
mtools-4.0.10
и страница справки с 1996 года - 15 лет. Должны ли мы действительно потерять некоторые функции?Я бы разделил работу на два этапа:
find
и выполните этот скрипт для каждого файла, который вы хотите скопировать.Должны ли мы помочь в этом подходе? :)
Вот скрипт для автоматического переименования файлов:
и это мой тестовый вызов:
Примечание: -maxdepth, -name и -type используются для значительного ограничения количества затронутых файлов. Я не проверял скрипт на предмет более глубоких файловых структур, а также на наличие пробелов в именах файлов и других, прикольных символов, таких как перевод строки, перевод страницы и так далее.
Я использовал .1, потому что это не создает проблем в большинстве команд, в то время как (и a) часто требуют маскировки.
источник
По
cp
крайней мере, не с GNU .Настоятельно рекомендуется не иметь повторяющихся имен файлов (игнорируя регистр), они просто причинят вам боль. Найдите список таких дубликатов, используя
Затем вручную переименуйте один из файлов для каждой строки, если вывод. Старайтесь избегать создания дубликатов в будущем.
источник