Gentoo Archives: gentoo-user-ru

From: Alex Efros <powerman@××××××××××××××××××.com>
To: gentoo-user-ru@l.g.o
Subject: Re: [gentoo-user-ru] В текущем каталоге и его подкаталогах, во всех файлах в именах которых содержется пробел/пробелы заменить их на знак "_".
Date: Fri, 02 Jun 2006 18:02:05
Message-Id: 20060602180006.GH7271@home.power
In Reply to: [gentoo-user-ru] В текущем каталоге и его подкаталогах, во всех файлах в именах которых содержется пробел/пробелы заменить их на знак "_". by Victor Skurihin
1 Hi!
2
3 On Fri, Jun 02, 2006 at 09:44:04PM +0400, Victor Skurihin wrote:
4 > Вот для решения сабжа попробовал использовать find,
5 > find ./ -type f -regex ".* .*" -exec mv {} `echo {}|tr ' ' '_'` \;
6 > но не добился желаемого:
7
8 Во-первых в bash и find regexp-ы по-проще, а-ля как в DOS, так что не
9 ".* .*"
10 а
11 "* *"
12
13 Во-вторых комбинация `...` выполнится один раз при запуске команды и find
14 получит параметрами её результат - судя по всему ты хотел чтобы эта
15 команда выполнялась для каждого файла, т.е. не
16 find ... -exec ... `...` \;
17 а что-то типа
18 find ... -exec bash -c '... `...`' \;
19
20
21 P.S. Кстати, bash&find явно что-то химичат со вторым пунктом. Если в `...`
22 команда относительно сложная, всё работает как я описал, т.е.:
23 find . -exec echo ... `ls -dl "{}"` \;
24 не работает (и не должен), а
25 find . -exec bash -c 'echo ... `ls -dl "{}"`' \;
26 работает корректно. НО! Если в `...` команда простая, то
27 find . -exec echo ... `echo "{}"` \;
28 почему-то ТОЖЕ РАБОТАЕТ, хотя и не должен по логике... работает идентично
29 find . -exec bash -c 'echo ... `echo "{}"`' \;
30 Кто-нить это чудо объяснить может?
31
32 --
33 WBR, Alex.
34 --
35 gentoo-user-ru@g.o mailing list

Replies