The moreutils collection

Charly's Column – moreutils

Article from Issue 219/2019

This month, sys admin columnist Charly dumps the moreutils toolbox on his workbench and takes combine and vidir for a spin.

In the March 2013 issue, I wrote about ifdata, which gives you information about networks in a way that is great for scripting. I had taken the tool from the moreutils package at the time; this toolbox comes with almost every flavor of Linux, and, if not, you can download it [1]. Further investigation of the package reveals even more laser-sharp tools. For instance, combine is really practical for comparing stuff. You need to pass in the names of two text files and a logical operator: and, not, or, or xor (exclusive or).

As an example, I created two text files with IP addresses and networks. Some of the addresses and networks are included in both files, while others are not. Now I let combine compare the files, first with the and operator:

combine iplist-a.text and iplist-b.text

In Figure 1, you can see the content of the two files, and then the combine command line. The output I got was all the lines that occur in both files.

Figure 1: The contents of two sample files at the top. combine compares them in different ways.

When I executed the command with the or operator, I could see everything that occurred in one or both the files. Important: If a line appears in both files, it also appears twice. This is often undesirable, but can be suppressed with:

combine iplist-a.text or iplist-b.text | sort | uniq

One thing is probably already clear to most readers: The same results are possible with cat, but many roads lead to Rome. Using the not operator, I can output all the lines that occur in the first file, but not in the second. The xor operator tells combine to return the lines that are only found in one file, but not in both.

Sly List

Another workhorse from the moreutils package goes by the name of vidir. I don't use it often, but if I do, it saves a huge amount of typing. (Praise be to anything that contributes to my laziness.) vidir in particular makes it easier to rename files. Normally, I do this with:

mv <File_1> <File_2>

The Perl rename tool does this more conveniently and can process multiple files at the same time. But vidir has a special trick up its sleeve. When I run it in the current directory, it opens Vi (or whatever $EDITOR defines) and displays a list of the files present in the directory. Now I can edit the file names to suit my needs. In Figure 2, I renamed the iplist files from the earlier example. When I leave the editor and run ls, hey presto, I find the files have been renamed.

Figure 2: vidir fetches a file list and presents it in the editor.

This excursion has by no means exhausted the moreutils box – in fact, it comprises 17 tools. Some only do tiny jobs (e.g., isutf8 checks whether a file is valid UTF-8); others are more extensive – some great DIY stuff included!

The Author

Charly Kühnast manages Unix systems in the data center in the Lower Rhine region of Germany. His responsibilities include ensuring the security and availability of firewalls and the DMZ.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Tutorials – moreutils

    Upgrade your Bash sessions with extra features and power.

  • Charly's Column: ifdata

    Script-friendly ifdata from the Moreutils package delivers absolutely precise network interface status information, with no need to extract individual values.

  • Charly’s Column: S3QL

    Sys admin Charly has been an enthusiastic amateur photographer for many years. Recently, he started worrying about something happening to his rapidly expanding photo collection. Can the cloud save the day?

  • Charly’s Column: SendmailAnalyzer

    During the ongoing battle against spam, admins should inspect their troop’s battle lines from time to time. If you don’t relish the thought of counting the dinnerware, you can use the services of a logfile inspector like SendmailAnalyzer, which works surprisingly well with Postfix and the like.

  • Charly's Column

    Parallel SSH is the name of an easy-to-configure tool that our resident sys admin, Charly, now routinely deploys whenever he needs to launch the same programs, copy the same files, or kill the same processes simultaneously on multiple computers.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More