NameChanger



Bulk renaming in a single pass with Go

I'm back and delivering more good cringe. The free GameChanger app provides scorekeeping, stat tracking, team management and group messaging tools for Baseball and Softball.

Article from Issue 244/2021

Renaming multiple files following a pattern often requires small shell scripts. Mike Schilli looks to simplify this task with a Go program.

One popular interview question for system administrators is what is the easiest way to give a set of files a new extension. Take a directory of *.log files, for example: How do you rename them all in one go to *.log.old? It has reportedly happened that candidates suggested the shell command mv *.log *.log.old for this – however, they were then not hired.

There are already quite a few tools lurking around on GitHub that handle such tasks, such as the Renamer tool written in Rust [1]. But such simple utilities make for great illustrative examples, so I wanted to explore some Go techniques for bulk renaming. Paying tribute to the original, the Go variant presented below will also go by the name of Renamer. For example, to rename an entire set of logfiles ending in .log to .log.bak, just use the call shown in line 1 of Listing 1.

NameChanger

Or how about renaming vacation photos currently named IMG_8858.JPG through IMG_9091.JPG to hawaii-2020-0001.jpg through hawaii-2020-0234.jpg? My Go program does that too with the call from line 4, replacing the placeholder {seq} with a counter incremented by one for each renamed file, which it pads with leading zeros to four digits.

[...]

More Videos For NameChanger »

NameChanger
Use Express-Checkout link below to read the full article (PDF).

Buy this article as PDF

NameChanger

Buy Linux Magazine

UK / Australia

NameChanger V1.3 OS X 10.4 (Tiger)

Related content

Namechanger Windows

  • Bulk Renaming

    When it comes to renaming multiple files, the command line offers time-saving options in the form of mv, rename, and mmv.

  • Swiss File Knife

    Swiss File Knife replaces more than 100 individual command-line tools at once, but it still fits on a USB stick and runs on all major operating systems.

  • Tailored

    Go is not only suitable for complex server programs, but it also cuts a fine figure with simple command-line tools for automating everyday life. Mike Schilli restructures the signature of a PDF manipulation tool.

  • Book Collector

    Mike Schilli does not put books on the shelf; instead, he scans them and saves the PDFs in Google Drive. A command-line Go program then rummages through the digitized books and downloads them as required.

  • A Python script warns of failed login attempts

    A number of sensors and cameras send author Mike Schilli a short message if someone tampers with his apartment door. He has now applied this security principle to the SSH entrance of his Linux computer.

Please enable JavaScript to view the comments powered by Disqus.comments powered by

Namechanger Plugin

Disqus