diff --git a/bin/file-enumerate b/bin/file-enumerate new file mode 120000 index 0000000..e1f6bdb --- /dev/null +++ b/bin/file-enumerate @@ -0,0 +1 @@ +../files/file-enumerate \ No newline at end of file diff --git a/files/file-enumerate b/files/file-enumerate new file mode 100755 index 0000000..879c574 --- /dev/null +++ b/files/file-enumerate @@ -0,0 +1,46 @@ +#!/bin/bash + +function _help() { + echo ' +Usage: file-enumerate [-k] [-p #] + + Creates a folder "enumerated" and hard links all files in the current folder + renamed with a number + + -k keep filename, and insert the number in the beginning + -p pad nunbers, defaults to 4 +' +exit +} +keep=false +pad=4 +for (( i=1; i<=$#; i++ )); do + j=$(( i + 1 )) + [[ "${!i}" = "-h" ]] && _help + [[ "${!i}" = "--help" ]] && _help + [[ "${!i}" = "-k" ]] && keep=true + [[ "${!i}" = "-p" ]] && { pad=${!j}; i=$(( i + 1 )); } +done + +printf -v padstr "%%0%dd" $pad + +_drive() { + ls -1prt | grep -v "/$" | cat -n | while read n f; do + printf -v padded $padstr $n + if [[ $keep = true ]]; then + printf -v outname "%s.%s" "$padded" "$f" + else + ext=${f#*.} + if [[ "$ext" = "$f" ]]; then + printf -v outname "%s" "$padded" + else + printf -v outname "%s.%s" "$padded" "$ext" + fi + fi + printf "%30s -> %s\n" "$f" "$outname" + cp -l "${f}" enumerated/"$outname" + done +} + +mkdir -p enumerated +_drive