I know there's a which command, that echoes the full name of a binary (e.g. which sh). However, I'm fairly sure there's a command that echoes the package that provides a particular binary. Is there such a command? If so, what is it? I'd like to be able to run this:

commandName ls

and get


for example.


I guess you are looking for the dpkg -S command (also see frequently used options for dpkg).

  • 4
    Thank you! dpkg -S `which COMMANDHERE` worked for me. – Delan Azabani May 30 '10 at 7:47
  • Gentoo: qfile <name> – Sergei May 20 '14 at 13:24
  • dpkg -S finds the name of the binary package name, which can differ from the name of the source (code) package. – Tino Jun 14 '17 at 12:04
  • Just for completeness, -S is the short form of the --search option, which is actually an option to the dpkg-query command (but plain dpkg works too) – waldyrious May 30 '18 at 9:13

If you want to find files in a package that you haven't installed, use apt-file

apt-get install -y apt-file
apt-file update

Then, to find something:

apt-file search /usr/bin/file


apt-find search file

Where "file" is the name of whatever you're searching for.

If you don't feel like going through this on every debian system, you can use this script:

which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

I just whipped that up then, but it seems to work well.

Note: "dpkg -S" only finds things that you've already installed.

  • 3
    Using the -y parameter is dangerous, it could say yes to any number of things. In the script it might be fine, but the first command should really read apt-get install apt-file without the -yas you can't know what the user's system looks like. – jmiserez Jun 11 '15 at 14:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.