Я использую Windows и пытаюсь использовать Cygwin для выполнения этой задачи. Я хотел бы рекурсивно переименовать файлы и каталоги следующим образом:
От:
1010110010\
1010110010\ 1010110010.jpg
1010110010\ 1010110010.txt
1010110020\
1010110020\ 1010110020.jpg
1010110020\ 1010110020.txt
...
чтобы:
1-01-01-1-001-0\
1-01-01-1-001-0\ 1-01-01-1-001-0.jpg
1-01-01-1-001-0\ 1-01-01-1-001-0.txt
1-01-01-1-002-0\
1-01-01-1-002-0\ 1-01-01-1-002-0.jpg
1-01-01-1-002-0\ 1-01-01-1-002-0.txt
...
Я думал об использовании цикла for, но цикл for не смог рекурсивно пройти по каталогам. Я могу использовать только для и sed, чтобы переименовать список файлов в каталоге:
for i in *; do j=`echo $i | sed 's/\(.\)\(..\)\(..\)\(.\)\(...\)\(.\)/\1-\2-\3-\4-\5-\6/g'`; mv $i $j; done
Но я хотел бы переименовать несколько каталогов и файлов внутри. Итак, я попытался найти "find", но я не знаю, как использовать переменные и регулярные выражения с командой "find". Кроме того, поскольку я использую Cygwin, я могу использовать только команду "mv" вместо команды "rename". Спасибо за любые предложения.