Одной из альтернатив может быть использование rename - Perl extension for renaming multiple files
.
Чтобы перевести все имена файлов в нижний регистр:rename 'y/A-Z/a-z/' *
Если вы не хотите устанавливать это, вы можете просто:
for item in *; do
mv "$item" "${item,,}"
done
Я не совсем уверен, хотите ли вы исправить символические ссылки или заменить их текстовыми файлами. Это решение заменяет символические ссылки текстовыми файлами :
.find -type l -exec bash -c '
for f in "$@"
do
t=$(readlink "$f")
rm -f "$f"
printf "%s\n" "$t" >"$f"
done
' _ {} +
Вы можете протестировать неразрушающий -, удалив rm
и изменив printf
так, чтобы он записывал "$f.tmp.txt"
вместо "$f"
. (Не забудьте потом удалить .tmp.txt
текстовые файлы.)
Если вы хотите заменить \r
на \n
для удобства чтения, вы также можете сделать это:
printf "%s\n" "${t//'$'\r/\n''}" >"$f" # non-POSIX
printf "%s\n" "$t" | tr "\r" "\n" >"$f" # POSIX