Linux — копирование файлов, как в Windows (игнорирование случая с теми же именами)

#linux #bash #copy

Вопрос:

Как я могу копировать файлы, чтобы игнорировать их случай?
Например, я хочу скопировать test.txt файл в целевой каталог, в котором уже есть Test.txt (то же имя, другой случай).
Однако я не хочу, чтобы он копировался как новый файл, а заменял существующий.

Я хочу получить тот же эффект копирования файлов, что и в Windows. Windows не учитывает регистр, поэтому файлы и каталоги с одинаковыми именами, но разными регистрами перезаписываются. Я хотел бы улучшить установку модов для игр, установленных с помощью Wine/Proton. Мне приходится использовать приложения Windows, такие как «Total Commander», чтобы все было скопировано правильно.

Комментарии:

1. Вы можете использовать -iname опцию поиска для поиска файла с одинаковым именем независимо от регистра и использовать его в качестве целевого объекта.

2. Можно написать пользовательскую функцию, чтобы позаботиться о вашем случае использования. Что должно произойти в случае наличия mutlipe одного и того же имени файла в разных комбинациях регистров в целевой папке?

3. Вы могли бы использовать ci- файлы

4. shopt -s nocaseglob; cp test.txt destination/test.txt*

5. @oguzismail nocaseglob не будет перезаписывать файл назначения, независимо от регистра. Вам нужна файловая система или оболочка без учета регистра, например ciops. Вот как это не работает nocaseglob : shopt -s nocaseglob; echo hello >BoB.txt echo ' world' >>bob.txt; cat bob.txt; cat BoB.txt оба файла написаны, а не BoB.txt перезаписано так, как хочет op: Однако я не хочу, чтобы он копировался как новый файл, а заменял существующий.