Я объединил регулярное выражение @Barmar и сценарий оболочки @ U880D, чтобы рекурсивно удалить любой повторяющийся префикс в именах файлов. Возникла проблема с использованием find
и perl-rename
, поэтому мне пришлось сделать это так:
#!/bin/bash
shopt -s globstar;
for DIR in ${PWD}/**/; do
cd "${DIR}"
for FILENAME in *.mp3 ; do
NEWFILENAME=$(echo "${FILENAME}" | perl -pe 's/^(.*)\1/\1/')
if [ "${FILENAME}" != "${NEWFILENAME}" ] ; then
mv "${FILENAME}" "${NEWFILENAME}"
fi
done
done