Я пытаюсь переименовать все каталоги и файлы в верхний регистр с помощью сценария оболочки. У меня есть работы, но не для подкаталогов. Поскольку имена каталогов меняются во время выполнения скриптов, я получаю такие вещи, как mv: cannot stat './def/two/three': No such file or directory
UNIX переименовывать файлы/каталоги в верхний регистр
Я попытался использовать -depth
с поиском, чтобы он переименовал снизу вверх. Но все равно сталкиваются с той же проблемой. Я хотя об использовании cut
, чтобы разбить путь на /
и переименовать этот путь, но я в растерянности.
Вот что у меня есть:
for i in `find . -name "*[a-z]*"`
do new_name=`echo $i | tr '[a-z]' '[A-Z]'`
mv $i $new_name
done
Я был бы признателен за любое направление, как я чувствую, что это должно быть общей задачей, но не смог найти рабочее решение от некоторых поисков Google.
Обратите внимание: я не могу использовать rename
, так как он не поддерживается моим дистрибутивом.
Я предлагаю переход к SuperUser. – Teddy 2010-11-24 16:01:01
Если у вас есть Perl, `rename` - чрезвычайно простой скрипт Perl. Вы можете использовать его вместо двоичного (что не так сильно). Есть десятки вопросов о SO о переименовании файлов и каталогов и даже о некоторых из них [глубина-первый] (http://stackoverflow.com/search?q=%2Brename+%2Bdepth). – 2010-11-24 17:16:59
Возможный дубликат [Как переименовать все папки и файлы в нижнем регистре в Linux?] (Http://stackoverflow.com/questions/152514/how-to-rename-all-folders-and-files-to-lowercase-on -linux) – 2010-11-24 17:17:46