Я могу использовать команду 'rename' для добавления отсутствующего символа ко всем именам файлов в текущем каталоге следующим образом:
echo "Renaming files..."
rename -v "s/^abcd124(.+)/abcd1234$1/" *.wav.gz;
echo "Done."
Однако я хотел бы сделать это для текущего каталога и все его подкаталоги.Я пробовал это:
echo "Renaming files..."
for dir in $(find ./ -type d); do
rename -v "s/^$dir\/abcd124(.+)/$dir\/abcd1234$1/" *.wav.gz;
done;
echo "Done."
Однако, если переменная $dir
содержит какие-либо из этих специальных символов: {}[]()^$. |*+?\
, то они не экранируются должным образом с помощью \, и мой скрипт дает сбой.
Как лучше всего решить эту проблему? Кроме того, что вы, ребята, думаете об использовании awk
для решения этой проблемы (преимущества/недостатки?)