Create a symbolic link pointing to target.
If relative is true, computes and uses a relative path from link to target.
Removes any existing file at the link path before creating.
Calculate a relative path from one directory to another.
Both paths are canonicalized before computation.
Returns None if either path cannot be canonicalized.
Quote a string for safe use in shell commands.
Returns the string unchanged if it contains only safe characters,
otherwise wraps it in single quotes with proper escaping.
Recursively walk a directory and collect all files with the given extension.
Skips symlinks to avoid infinite loops. Extension should not include the dot.