diff --git a/files/file-enumerate b/files/file-enumerate index 6de9e38..2789f98 100755 --- a/files/file-enumerate +++ b/files/file-enumerate @@ -12,45 +12,53 @@ Usage: file-enumerate [-k] [-p #] [-o folder] -o Output folder name, default: enumerated -c Copy instead of hard link -i Offset. start from number (default 1) + -s Shuffle order ' -exit + exit } keep=false pad=4 output=enumerated hardlink="-l" offset=1 +shuf=false for (( i=1; i<=$#; i++ )); do - j=$(( i + 1 )) - [[ "${!i}" = "-h" ]] && _help - [[ "${!i}" = "--help" ]] && _help - [[ "${!i}" = "-c" ]] && hardlink="" - [[ "${!i}" = "-k" ]] && keep=true - [[ "${!i}" = "-p" ]] && { pad=${!j}; i=$(( i + 1 )); } - [[ "${!i}" = "-o" ]] && { output=${!j}; i=$(( i + 1 )); } - [[ "${!i}" = "-i" ]] && { offset=${!j}; i=$(( i + 1 )); } + j=$(( i + 1 )) + [[ "${!i}" = "-h" ]] && _help + [[ "${!i}" = "--help" ]] && _help + [[ "${!i}" = "-c" ]] && hardlink="" + [[ "${!i}" = "-k" ]] && keep=true + [[ "${!i}" = "-p" ]] && { pad=${!j}; i=$(( i + 1 )); } + [[ "${!i}" = "-o" ]] && { output=${!j}; i=$(( i + 1 )); } + [[ "${!i}" = "-i" ]] && { offset=${!j}; i=$(( i + 1 )); } + [[ "${!i}" = "-s" ]] && { shuf=true; } done printf -v padstr "%%0%dd" $pad -_drive() { - ls -1p | grep -v "/$" | sort -V | cat -n | while read n f; do - n=$(( n + $offset - 1 )) - 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 $hardlink "${f}" "${output}"/"$outname" - done +_enum() { + if [[ $shuf = true ]]; then + sorting="shuf" + else + sorting="sort -V" + fi + ls -1p | grep -v "/$" | $sorting | cat -n | while read n f; do + n=$(( n + $offset - 1 )) + 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 $hardlink "${f}" "${output}"/"$outname" + done } mkdir -p "${output}" -_drive +_enum