#!/bin/bash function _help() { echo ' Usage: file-enumerate [-k] [-p #] [-o folder] Creates a folder "enumerated" and hard links all files in the current folder renamed with a number (d.ext). -k Keep filename as is (d.filename) -p Pad numbers, defaults to 4 -o Output older name, default: enumerated ' exit } keep=false pad=4 output=enumerated 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 )); } [[ "${!i}" = "-o" ]] && { output=${!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}" "${output}"/"$outname" done } mkdir -p "${output}" _drive