[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] Skip to the content of the web site.

Advanced Directory Commands

Contents Previous Topic Next Topic

We have already introduced mkdir and rmdir for making and removing directories, and cd for navigating directories. We will now look at some of the commands which are useful in inspecting directories:

basename

The command basename filedir returns the name of the file or directory without any path information. The command basename filedir suffix also removes the given suffix, if it matches.

{ecelinux:1} basename ~/public_html/index.html
index.html
{ecelinux:2} basename ~/public_html/index.html .html
index
{ecelinux:3} basename ~/public_html/index.html .png
index.html
{ecelinux:4}

dirname

The command dirname filedir returns the path information to the file or directory. The resulting path will be relative or absolute depending on how the file or directory was specified

{ecelinux:1} dirname index.html
.
{ecelinux:2} dirname ~/public_html/index.html
/home/ece250/public_html
{ecelinux:3}

du

The du (directory usage) command list how many blocks are (cumulatively) stored in the current directory. The command du directory lists all of the sub-directories and their disk usage.

Options include:

-k
The default unit on a hard drive is the block: any file always occupies an integral number of blocks, even if all the blocks are not filled. If you want the number of kibityes used (multiples of 1024 bytes), use this option.
-s
This summarizes the disk usage for all the files and directories below a given directory.

For example,

{ecelinux:1} du -sk ~/public_html
83820   /home/ece250/public_html/
{ecelinux:2}

suggests that the public_html directory for ece250 contains approximately 81.9 MiB.

find

The find directory command lists all the files and subdirectories of the specified directory, including the directory itself.

Some of the more common options are:

-follow
Follow symbolic links (necessary for ecelinux if you want to search all your files).
-name pattern
Only list those files and directories which match the file name pattern (using *, [...], and ?).
-type c
Restrict, for example, the objects printed to files (f) or directories (d).

however, these options must appear after the directory, for example:

{ecelinux:1} find .
.
./images
./images/index.html
./images/banner.png
./index.html
./index.content
{ecelinux:2} 

In order to run a spell checker on all of the html files in your public_html directory, use:

{ecelinux:1} foreach i (`find . -name "*.html" -follow`)
foreach?     ispell $i
foreach? end
{ecelinux:2}

The command in `...` is executed, and for each file, the command ispell on that file is executed.

To change the permission modifiers of all the files in your public_html directory to the appropriate type, you could use

{ecelinux:1} chmod 755 `find ~/public_html -follow -type d`
{ecelinux:2} chmod 644 `find ~/public_html -follow -type f`
{ecelinux:3}

unless, of course, you are using server-side includes, in which case, all html files must also have the permission modifiers set to 755.

Summary

This looks at two commands which can be used to examine directories. The next topic shows how you can easily move between multiple directories using pushd, popd, and dirs.

Contents Previous Topic Next Topic

Copyright ©2005-2008 by Douglas Wilhelm Harder. All rights reserved.

[an error occurred while processing this directive]