( NevemTeve | 2018. 12. 25., k – 16:43 )

Szerintem először nevezd át a fájlokat, azután magyarázd el, hogy szerencsétlen véletlen volt. Ami ráadásul bármikor megismétlődhet. Ilyesmi lenne, nem teszteltem:


#!/bin/sh

LC_ALL=en_US.ISO-8859-1

find . -name '*.txt' | while IFS='\n' read -r L; do
    Dir="$(dirname "$L")"
    Old="$(basename "$L")"
    New="$(printf '%s' "$Old" | LC_ALL=C sed 's/[^A-Za-z0-9_.-]/@/g')"
    if [ "x$Old" != "x$New" ];
	then printf "mv -- \"%s/%s\" \"%s/%s\"\n" "$Dir" "$Old" "$Dir" "$New"
    fi
done