#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: Однако я не хочу, чтобы он копировался как новый файл, а заменял существующий.