shuffle for enumeartor

This commit is contained in:
Q
2022-08-28 11:26:34 +03:00
parent 4759c3554d
commit 24ed46722d

View File

@@ -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