Why is it so hard to find a file in Ubuntu?

It's very hard to find files in Ubuntu. In Windows, you could just go to C:\Program Files and you would find what you need. In Ubuntu, you must use search to find something you need. Maybe I am missing something?


Solution 1:

Why is it so hard to find a file in Ubuntu?

Why doesn't a helicopter function like a hot-air balloon?

Why doesn't Microsoft Office work like a type-writer?

Why can't I use an Android app on iOS?

The same sort of comparison is being made here. Unixes (Including Ubuntu) are profoundly different platforms from Windows (NT). NT is its own special kind of beast. Judging Linux by NT paradigms is somewhat akin to troubleshooting a diesel engine using gasoline engine mechanics. They have much in common, but there are also incredible differences.

Playing with a cat as though it were a dog, seldom leads to gratification. You must adjust your paradigm to accommodate your platform. Each architecture has specific merits and conventions that you must obey, if you are to avoid pulling back a bloodied nub.

Paradigm Fail(comic from here)

"In Windows, you could just go to C:\Program Files and you would find what you need." - Really? Are you sure? Windows stores some pretty key stuff in the Registry, that's not located under Program Files. "My Documents" is also not in Program Files, yet will frequently contain things you'll care to see..

"In Ubuntu you must use search to find something you need." True, if you don't know where it is in the first place. Same applies to everything, everywhere. Now, where are my stupid car keys? Nope, not in C:\Program Files.. Damnit! Belgium!

"Maybe I am missing something?" Probably just a general introduction to the main concepts behind how content is managed in operating environments.. Friend, please let me help you learn to tame this powerful beast, so that you may crush your computing needs.


Introduction to how content is organized in operating environments

Regardless of your operating environment (Windows, macOS, Linux, your office desk), patterns have emerged that help organize content in a system for ease of use and scalability.

Common system-wide stuff

In a company, this would be policy documentation and the like. In an operating system, this would be core files needed to keep things running. In the Windows file structure, this is what C:\WINDOWS is all about. In Unix-based systems, there are various directories, /Libraries (Mac OS X) and /etc (Linux) that are used for these kinds of things. Users rarely, if ever, really need to deal with this for general use.

User-specific stuff

In an office, people generally have their own designated work space. Stored in these locations are documents/content specific to an individual.

Operating systems are the same. On Windows, the "My Documents" folder is specific to each user and contains files just for that person. On Linux, /home/[username] is dedicated to this purpose. On macOS, /Users/[username] is.

Typically the user's personal space has locations within it dedicated to specific categories. Windows has the "My Pictures" directory for example, located with "My Documents". On Ubuntu Linux, you'll find /home/[username]/Pictures - macOS has its own obvious equivalent.

Tools management

In an office, when you want a new tool, there's generally a system in place to manage that. I'm thinking of inventory in particular. Inventory will generally keep tabs on what you have and its condition.

On Windows = Add / Remove Programs plus the Registry.

On Ubuntu Linux = The apt package manager - use Synaptic Package Manager, aptitude or another front-end to apt.

On Mac OS X 10.6+ = The App Store (and /Applications, to an extent).

Getting more specific

As shamelessly copied from here, the general system directory structure found in Ubuntu follows this convention:

/bin - binary applications (most of your executable files)

/boot - files required to boot (such as the kernel, etc.)

/dev - your devices (everything from drives to displays)

/etc - just about every configuration file for your system

/etc/profile.d - contains scripts that are run by /etc/profile upon login.

/etc/rc.d - contains a number of shell scripts that are run on bootup at different run levels. There is also typically an rc.inet1 script to set up networking (in [Slackware][6]), an rc.modules script to load modular device drivers, and an rc.local script that can be edited to run commands desired by the administrator, along the lines of autoexec.bat in DOS.

/etc/rc.d/init.d - contains most of the initialization scripts themselves on an [RPM][7]-based system.

/etc/rc.d/rc*.d - where “*” is a number corresponding to the default run level. Contains files for services to be started and stopped at that run level. On RPM-based systems, these files are symbolic links to the initialization scripts themselves, which are in /etc/rc.d/init.d.

/etc/skel - directory containing several example or skeleton initialization shells. Often contains subdirectories and files used to populate a new user’s home directory.

/etc/X11 - configuration files for the X Window system

/home - locally stored user files and folders

/lib - system libraries (similar to Program Files)

/lost+found - lost and found for lost files

/media - mounted (or loaded) devices such as cdroms, digital cameras, etc.

/mnt - mounted file systems

/opt - location for “optionally” installed programs

/proc - dynamic directory including information about and listing of processes

/root - “home” folder for the root user

/sbin - system-only binaries (see /bin)

/sys - contains information about the system

/tmp - temporary files

/usr - applications mainly for regular users

/var - mainly logs, databases, etc.

/usr/local/bin - the place to put your own programs. They will not be overwritten with upgrades.

/usr/share/doc - documentation.

General tips on finding stuff in Ubuntu

Learn what kind of animal you're dealing with, unless you hate your own face.

Ball of fluff with teeth and claws

Solution 2:

If you need to find the location of a program, you can use the which command. It would also help to understand the Unix file system hierachy - /etc/ for configuration files, /usr/bin/ for global command binaries (and /usr/ which contains the majority of (multi-)user utilities and applications), and so on. You can use locate, slocate or rlocate from the command line for searching for files.

/home/user is the same as your documents and settings or /users/user folder.

It's not that hard, just different.