summaryrefslogtreecommitdiff
path: root/scripts/virename
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2026-05-06 08:30:49 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2026-05-06 08:30:49 +0200
commit60052659b98832c78c902e4f27ecee2663d8e913 (patch)
tree9efc1388569c43456557aa1975b4bec99bf06c94 /scripts/virename
parent10e16c2fb2266bb2b46ec7ea64d721de0c29a0d9 (diff)
downloadconfig-60052659b98832c78c902e4f27ecee2663d8e913.tar.gz
config-60052659b98832c78c902e4f27ecee2663d8e913.zip
Added scripts
Diffstat (limited to 'scripts/virename')
-rwxr-xr-xscripts/virename25
1 files changed, 25 insertions, 0 deletions
diff --git a/scripts/virename b/scripts/virename
new file mode 100755
index 0000000..8c30ccf
--- /dev/null
+++ b/scripts/virename
@@ -0,0 +1,25 @@
1#!/bin/sh
2
3# Rename all files in the current directory with a visual editor.
4# Similar to sel add all && sel mv, but it actually works.
5
6file=$(mktemp)
7file2=$(mktemp)
8editor=${EDITOR:-vi}
9
10ls | tee "$file" > "$file2"
11$editor "$file2"
12
13if [ "$(wc -l "$file" | awk '{print $1}')" != \
14 "$(wc -l "$file2" | awk '{print $1}')" ]; then
15 echo "Error reading new file names"
16else
17 paste "$file" "$file2" | while read -r f; do
18 fold=$(echo "$f" | sed 's/ .*//')
19 fnew=$(echo "$f" | sed 's/.* //')
20 if [ "$fold" != "$fnew" ]; then
21 mv "$fold" "$fnew" \
22 || echo "Error renaming $fold to $fnew"
23 fi
24 done
25fi

Generated with cgit - Back to sebastiano.tronto.net