Массовое переименование файлов с пробелами и разными регистрами


mancubus - Posted on 31 Июль 2007

Переименование файлов с использованием перловых выражений s/// tr///

$ rename 'tr/ /_/;$_=lc;' *

команда переводит все файлы в директории в нижний регистр и заменяет " " на _

0
Ваша оценка: Ничего

Вот альтернатива обработки файлов, содержащих пробелы в именах:

find "$YOUR_PATH" -type f -print0 | \
while read -d '' FILE; do
    echo "$FILE"; #делайте что надо
done

> ls -l
total 0
-rw-r--r--  1 uu uu 0 Aug 16 13:36  1 2 3
-rw-r--r--  1 uu uu 0 Aug 16 13:36 1 2 3
> rename 'tr/ /_/;$_=lc;' *
> ls -l
total 0
-rw-r--r--  1 uu uu 0 Aug 16 13:36  1 2 3
-rw-r--r--  1 uu uu 0 Aug 16 13:36 1 2 3

ramok@~/ mkd tmp/delme
ramok@~/tmp/delme/ touch "1 2 3" " 1 2 3"
ramok@~/tmp/delme/ ls -la
-rw-rw-r--  1 komar komar    0 2007-08-16 14:09  1 2 3
-rw-rw-r--  1 komar komar    0 2007-08-16 14:09 1 2 3
ramok@~/tmp/delme/ rename 'tr/ /_/;$_=lc;' *
ramok@~/tmp/delme/ ls -la
-rw-rw-r--  1 komar komar    0 2007-08-16 14:09 _1_2_3
-rw-rw-r--  1 komar komar    0 2007-08-16 14:09 1_2_3

может у вас там не пробелы?
покажите что у вас выводит

echo * | xxd -g 1

или

echo * | od -t u1

--
Signature invent in progress 24% ##........

 ~>mkdir 1
 ~>cd 1
 ~/1>touch '1 2 3'
 ~/1>touch ' 1 2 3'
 ~/1>echo * | od -t u1
0000000  32  49  32  50  32  51  32  49  32  50  32  51  10
0000015
 ~/1>echo * | xxd -g 1
0000000: 20 31 20 32 20 33 20 31 20 32 20 33 0a            1 2 3 1 2 3.
 ~/1>rename 'tr/ /_/;$_=lc;' *
 ~/1>ls -la
total 12
-rw-r--r--   1 uu users     0 2007-08-17 12:30  1 2 3
drwxr-xr-x   2 uu users    96 2007-08-17 12:30 .
drwxr-xr-x 228 uu users 12712 2007-08-17 12:30 ..
-rw-r--r--   1 uu users     0 2007-08-17 12:30 1 2 3

значит или:
1. rename -не тот rename что надо
2. в 'tr/ /_/' не пробел
других идей пока нет почему Ж:-)

попробуйте
1. rename 's/\s/_/g' *
2. запустите rename -n, он должен показать во что конвертит
--
Signature invent in progress 24% ##........

у меня вроде отсюда:

>pacman -Qo `which rename`
/usr/bin/rename is owned by util-linux 2.12-12
 
...
ftp://ftp.kernel.org/pub/linux/utils/util-linux/util-linux-2.12r.tar.bz2

тут речь шла о rename из поставки perl

ramok@<~/ dpkg -S rename
perl: /usr/bin/prename
perl: /usr/share/man/man1/prename.1.gz

и обычно на prename делается линк на rename

--
Signature invent in progress 24% ##........

~/1>echo * | od -t u1a
0000000  32  49  32  50  32  51  32  49  32  50  32  51  10
         sp   1  sp   2  sp   3  sp   1  sp   2  sp   3  nl
0000015

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.