‘Linux’ is a case sensitive environment, contrary to a more popular ‘Windows’. Many developers and mappers in the ‘Quake’ community, who natively develop on ‘Windows’, sometimes create a little bit of confusion for the ‘Linux’ users, when certain files or directories in their maps or mods, are named with uppercase letters, while the game, actually expects lowercase letters to appear for that matter. That is at least how I understand it, why does the problem occur. On ‘Windows’, again, it is not any problem, since ‘A’ = ‘a’ there - but on Linux, only ‘A’ = ‘A’ and only ‘a’ = ‘a’, while ‘A’ ≠ ‘a’.
The problem shows up as soon as with the “pak0.pak” file in the original ‘Quake’ data structure, as it comes named as “PAK0.PAK”. In order for the game to work, ‘Linux’ users must rename that file accordingly to all-lowercase letters. Little thing, which may create a disproportionately big obstacle; not a very decent puzzle for the start.
While it is feasible to use scripts or functions to massively turn any kinds of spellings to all-lowercase spellings - even if this way out mostly appears sufficient for ‘Quake’, I believe it does not entirely solve the issue. The issue, is: what does the program actually expect and what does it get? The root cause of the problem, in my opinion, is a thing of precision, which in order to be solved, demands consistency from developers. The most simple way to spare some of us the case sensitivity headache, is to simply avoid using any uppercase letters in file or directory naming altogether - just to avoid potential mistakes of this nature. The question is, why not?
For the already existing issues - save for data contained in “.pak” archives - one of the easy deals that has worked well for me thusfar, is a script:
#!/bin/bash
#print usage
if -z $1 ];then
echo "Usage :$(basename $0) parent-directory"
exit 1
fi
#process all subdirectories and files in parent directory
all="$(find $1 -depth)"
for name in ${all}; do
#set new name in lower case for files and directories
new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')"
#check if new name already exists
if "${name}" != "${new_name}" ]; then
! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!"
fi
done
exit 0
https://vitux.com/convert-filenames-to-lowercase-through-ubuntu-command-line/ - I did not find the other mentioned ‘rename’ program as easy to use as the script given, if processed as follows - on ‘Ubuntu’:
- Open terminal [CTRL+ALT+T], then create a new file through command: “touch rename.sh”
- Open the newly created “rename.sh” file, then copy-paste the code given earlier and save
- Right-click on the newly created “rename.sh” file, enter “Properties” in the pop-up menu and enable the option: “Allow executing file as program”
- In order to apply, drag the “rename.sh” file icon and drop it in the terminal window, then drag the target folder and drop it in the same terminal window, so that both entities, would manifest as two pathways. In the end, hit enter to execute. All files in the target folder will be renamed, without a copy; the folder name will also be subject.