ocehb: (Default)
[personal profile] ocehb
В конкретном каталоге перевести все файлы и каталоги (и подкаталоги и т.д.) в нижний регистр.



function convert-depth () {
  local i
  pushd "$1" > /dev/null
  for i in *; do
    [[ "$i" != "${(L)i}" ]] && mv -f "$i" "${(L)i}"
    [[ -d "$i" ]] && convert-depth "${(L)i}"
  done
  popd > /dev/null
}

Date: 2006-06-06 07:26 am (UTC)
From: [identity profile] rmrfchik.livejournal.com
"for i in *" не лопнет?

Date: 2006-06-06 08:05 am (UTC)
From: [identity profile] rmrfchik.livejournal.com
Ну, в for может и не лопнет, зато rm лопнет ;)
Вобщем, я как-то настороженно отношусь к cmd * в скриптах.

Date: 2006-06-06 08:15 am (UTC)
From: [identity profile] rmrfchik.livejournal.com
Я знаю, как с этим бороться и так и делаю. И делаю так ровно потому, что мне не нравится cmd *.

Date: 2006-06-06 08:40 am (UTC)
From: [identity profile] rmrfchik.livejournal.com
Зачем? И та ясно, что zsh круче ;)
paul% echo $SHELL
/bin/zsh

Date: 2006-06-06 08:50 am (UTC)
From: [identity profile] rmrfchik.livejournal.com
paul% echo $ZSH_VERSION
4.3.2-dev-1

Date: 2006-06-06 08:09 am (UTC)
From: [identity profile] jerom.livejournal.com
rm * лопнет, а for i in *; do rm $i ;done не лопнет

Date: 2006-06-06 08:16 am (UTC)
From: [identity profile] rmrfchik.livejournal.com
Я знаю. Читать будем, что я пишу или как? ;)

Date: 2006-07-28 02:58 pm (UTC)
From: [identity profile] ex-svpv.livejournal.com
zmv '(*)' '${(L)1}'
Что-то рекурсивно **/* у меня сходу не заработало.

fts тоже самому делать смысла нет, можно через find
find . |while read -r f; do
[ $f = ${(L)f} ] || mv $f ${(L)f}
done

Хм. Правда с find'ом не работает. Забавно!

Profile

ocehb: (Default)
ocehb

January 2021

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 6th, 2026 11:05 am
Powered by Dreamwidth Studios