mirror of
https://github.com/LukeSmithxyz/voidrice.git
synced 2026-01-30 09:48:11 +01:00
highly improve and minimize
This commit is contained in:
parent
d08eea1cf5
commit
a06fe894c9
@ -1,35 +1,18 @@
|
|||||||
#!/bin/sh
|
#!/bin/dash
|
||||||
|
|
||||||
[ "$(id -u)" = "0" ] && echo "This script should not be run as root" >&2 && exit 1
|
[ "$(id -u)" = "0" ] && echo "This script should not be run as root" >&2 && exit 1
|
||||||
|
|
||||||
find . -type d -path '*/.*' -prune -o -print0 | xargs -0 -n1 -P10 -I{} sh -c '
|
find . -depth -type d -path '*/.*' -prune -o -print0 | xargs -0 -P 0 -I {} dash -c '
|
||||||
generate_unique_name() {
|
|
||||||
base_name="$1"; ext="$2"; dest_path="$3"; count=1
|
base="${1##*/}"
|
||||||
[ -z "$ext" ] && new_name="$base_name" || new_name="${base_name}.${ext}"
|
path="${1%/*}"
|
||||||
while [ -e "${dest_path}/${new_name}" ]; do
|
|
||||||
[ -z "$ext" ] && new_name="${base_name}_${count}" || new_name="${base_name}_${count}.${ext}"
|
pattern="s/[^a-zA-Z0-9 ._-]//g; s/[ .-]/_/g; s/_+/_/g; s/^_+//; s/_+$//; s/[A-Z]/\L&/g"
|
||||||
count=$(( count + 1 ))
|
|
||||||
done
|
[ -f "$1" ] && pattern="$pattern; s/_([^_]+)$/.\\1/"
|
||||||
echo "$new_name"
|
|
||||||
}
|
new_name="$(echo "$base" | sed -E "$pattern")"
|
||||||
process_item() {
|
|
||||||
item_path="$1";
|
[ "$base" != "$new_name" ] && [ -e "$path/$new_name" ] && new_name="${$}_${new_name}"
|
||||||
[ "$item_path" = "." ] && return
|
[ "$base" != "$new_name" ] && mv "$1" "$path/$new_name"
|
||||||
dir_name=$(dirname "$item_path"); base_name=$(basename "$item_path")
|
' _ {}
|
||||||
[ -d "$item_path" ] && {
|
|
||||||
new_name=$(echo "$base_name" | sed -E "s/[^a-zA-Z0-9 _.-]+//g; s/[ .-]+/_/g; s/_+/_/g; s/^_//; s/_$//; s/(.*)/\L\1/")
|
|
||||||
[ -z "$new_name" ] && new_name="untitled"
|
|
||||||
} || {
|
|
||||||
file_ext="${base_name##*.}"
|
|
||||||
base_name_no_ext="${base_name%.*}"
|
|
||||||
new_base_name_no_ext=$(echo "$base_name_no_ext" | sed -E "s/[^a-zA-Z0-9 _.-]+//g; s/[ .-]+/_/g; s/_+/_/g; s/^_//; s/_$//; s/(.*)/\L\1/")
|
|
||||||
[ -z "$new_base_name_no_ext" ] && new_base_name_no_ext="untitled"
|
|
||||||
[ -z "$file_ext" ] || [ "$file_ext" = "$base_name_no_ext" ] && new_name="$new_base_name_no_ext" || new_name="${new_base_name_no_ext}.${file_ext}"
|
|
||||||
}
|
|
||||||
[ "$base_name" != "$new_name" ] && {
|
|
||||||
[ -e "${dir_name}/${new_name}" ] && new_name=$(generate_unique_name "${new_name%.*}" "${new_name##*.}" "$dir_name")
|
|
||||||
mv "$item_path" "${dir_name}/${new_name}" 2>/dev/null || true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
process_item "{}"
|
|
||||||
' 2>/dev/null
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user