Dirname

Last updated
dirname
Developers Various open-source and commercial developers
Written in C
Operating system Unix, Unix-like, IBM i
Platform Cross-platform
Type Command
License coreutils: GPLv3+

dirname is a shell command for extracting the directory path portion of a path; without the last name. The command is specified in the Single UNIX Specification and is primarily used in shell scripts.

Contents

The version in GNU Core Utilities was written by David MacKenzie and Jim Meyering. [1] The command is available for Windows as part of the GnuWin32 project [2] and UnxUtils [3] and is in IBM i. [4]

Usage

The Single UNIX Specification is: dirname path. The required argument, path, is a file path string.

Examples

The command reports the directory path portion of a path ignoring any trailing slashes.

$ dirname/path/to/filename.ext /path/to$ dirname/path/to/ /path$ dirnamefilename.ext .

Performance

Since the command accepts only one operand, its usage within the inner loop of a shell script can be detrimental to performance. Consider:

whilereadfile;dodirname"$file"done<some-input 

The above causes a separate process invocation for each line of input. For this reason, shell substitution is typically used instead:

echo"${file%/*}";

Or, if relative pathnames need to be handled as well:

if[-n"${file##*/*}"];thenecho"."elseecho"${file%/*}";fi

Note that these handle trailing slashes differently than dirname.

See also

References

  1. dirname(1)    Linux User Manual – User Commands from Manned.org
  2. CoreUtils for Windows
  3. Native Win32 ports of some GNU utilities
  4. IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). IBM . Archived (PDF) from the original on 2020-09-18. Retrieved 2020-09-05.