feat(user/zeropad.sh):Use find instead of ls; use bash functions
authorSteven Baltakatei Sandoval <baltakatei@gmail.com>
Mon, 15 Jul 2024 21:30:03 +0000 (21:30 +0000)
committerSteven Baltakatei Sandoval <baltakatei@gmail.com>
Mon, 15 Jul 2024 21:30:03 +0000 (21:30 +0000)
user/zeropad.sh

index 57b56c65b4a8dedaf87309f8a6f52083932f43cd..369d8c06ca771433319a22e6150520084a601415 100755 (executable)
@@ -1,27 +1,37 @@
 #!/bin/bash
 # Desc: Zero-pad working dir files with initial digits for sorting
 # Usage: zeropad.sh
-# Version: 0.0.3
-
-# Find the maximum number of leading digits in the filenames of working dir
-max_digits="$(ls -1 * | sed 's/[^0-9].*//' | awk '{ if(length > L) L=length } END { print L }')";
-declare -p max_digits;
-
-# Loop over the files and rename them
-while read -r file; do
-    re='^[0-9]+';
-    if [[ ! "$file" =~ $re ]]; then continue; fi;
-
-    # Extract the leading digits
-    digits="$(echo "$file" | sed 's/\([0-9]*\).*/\1/')";
-    # Zero-pad the digits
-    padded_digits="$(printf "%0${max_digits}d" "$digits")";
-    # Construct the new filename
-    new_file="${padded_digits}${file#${digits}}";
-    # Rename the file
-    mv -n "$file" "$new_file"
-    # declare -p file new_file; # debug
-done < <(find . -mindepth 1 -maxdepth 1 -type f);
+# Version: 0.0.4
+
+list_files() {
+    find . -mindepth 1 -maxdepth 1 -type f -exec basename '{}' \; ;
+};
+main () {
+    # Find the maximum number of leading digits in the filenames of working dir
+    max_digits="$(list_files | sed -e 's/[^0-9].*//' | awk '{ if(length > L) L=length } END { print L }')";
+    # declare -p max_digits; # debug
+
+    # Loop over the files and rename them
+    while read -r file; do
+        re='^[0-9]+';
+        if [[ ! "$file" =~ $re ]]; then continue; fi;
+
+        # Extract the leading digits
+        digits="$(echo "$file" | sed 's/\([0-9]*\).*/\1/')";
+        # Zero-pad the digits
+        padded_digits="$(printf "%0${max_digits}d" "$digits")";
+        # Construct the new filename
+        new_file="${padded_digits}${file#${digits}}";
+        # Rename the file
+        mv -n "$file" "$new_file"
+        # declare -p file new_file; # debug
+    done < <(list_files);
+};
+
+main "$@";
+
+
+
 
 # Author: Steven Baltakatei Sandoval
 # License: GPLv3+