aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ankarström <john@ankarstrom.se>2021-05-03 21:46:33 +0200
committerJohn Ankarström <john@ankarstrom.se>2021-05-03 21:46:33 +0200
commitf2b75f9fcf40e72a3c0a0a95bb35a408bd19501a (patch)
treeeacec264e00d0d0369863fbc26addd634082a181
parent0d0d8d994603a740446085c6ba096642acaf50d4 (diff)
downloadxutil-f2b75f9fcf40e72a3c0a0a95bb35a408bd19501a.tar.gz
Add 'mkmv' utility
-rwxr-xr-xmkmv23
-rw-r--r--mkmv.135
2 files changed, 58 insertions, 0 deletions
diff --git a/mkmv b/mkmv
new file mode 100755
index 0000000..b3452c0
--- /dev/null
+++ b/mkmv
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+# mkmv -- move files to new directory
+
+use Getopt::Std;
+use File::Copy qw/mv/;
+
+getopts('t:', \%opt);
+&usage if not $opt{t};
+&usage if not @ARGV;
+
+mkdir "$opt{t}.tmp" or die "Could not create directory $opt{t}.tmp: $!\n";
+mv $_, "$opt{t}/$_" or warn "Could not move $_ to $opt{t}/$_: $!\n" for @ARGV;
+mv "$opt{t}.tmp", $opt{t} or warn "Could not move $opt{t}.tmp to $opt{t}: $!\n";
+
+sub usage { &HELP_MESSAGE; exit 1; }
+sub HELP_MESSAGE {
+ print STDERR <<OPT;
+usage: $0 -t target file [...]
+ -t the target directory
+OPT
+}
+sub VERSION_MESSAGE {}
diff --git a/mkmv.1 b/mkmv.1
new file mode 100644
index 0000000..7087769
--- /dev/null
+++ b/mkmv.1
@@ -0,0 +1,35 @@
+.Dd $Mdocdate$
+.Dt mkmv 1
+.Os
+.
+.Sh NAME
+.Nm mkmv
+.Nd move files to new directory
+.
+.Sh SYNOPSIS
+.Nm
+.Fl t Ar target
+.Ar file ...
+.
+.Sh DESCIPTION
+.Pp
+.Nm
+moves the specified files into a new directory named
+.Ar target .
+It correctly handles the (not uncommon) case
+where one of the moved files has the same name
+as the target directory.
+
+Note that
+.Nm
+does not support the argument syntax of
+.Xr mv 1 .
+The explicit
+.Fl t
+flag is obligatory.
+.
+.Sh AUTHORS
+.Pp
+.Nm
+is written by John Ankarström
+.Aq Mt john (at) ankarstrom.se .