LINUX.ORG.RU

Нажми F1 в диалоге, там даже примеры есть.

Gotf ★★★
()

rename tr/A-Z/a-z/ *

anonymous
()

Если в окне переименования нажать ESC 1, то ответ легко найти в открывшейся справке. Что-то вроде:

«Преобразование регистра»

Вы можете также преобразовать регистр символов в именах файлов. Если вы используете '\u' или '\l' в маске приемника, то следующий символ имени будет образован в верхнем (заглавные символы) или нижнем (строчные) регистре соответственно.

Если использовать в маске приемника '\U' или '\L', то к соответствующему регистру будут преобразованы все последующие символы, вплоть до следующего вхождения '\E' или '\U', появления символа '\L' или конца имени файла.

Применение '\u' и '\l' обеспечивает более широкие возможности, чем '\U' и '\L'.

Например, если маска источника есть '*' (опция «Образцы в стиле shell» включена) или '^\(.*\)$' (опция «Образцы в стиле shell» выключена), а маска приемника есть '\L\u*', имена файлов будут преобразованы таким образом, что первые буквы имени будут заглавными, а все остальные - строчными.

Символ '\' в масках используется для отмены специальной интерпретации отдельных символов. Например, '\\' означает просто backslash и '\*' означает просто звездочку (asterisk).

bormant ★★★★★
()

говорит

Ошибка: AbC и AbC - один и тот же файл

на каждый файл. нифига не переименовывает

odii
() автор топика
cat ~/bin/tolower 
#!/bin/sh
# this script has been written by Eddy 
#
#		tolower -- преобразует аргумент(ы) в нижний регистр
#
# Создан 12-го Март 2006 года в  0:04
#
echo "$*"|tr '[:upper:]' '[:lower:]'
Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em
laptop-eddy> 01.01, 16:23 ~
cat ~/bin/small/lowercase.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define BUFFSIZE 1024
#define UC unsigned char

void usage(int);
UC* file;
UC file1[BUFFSIZE];
UC* basename;
UC* newfile;

int to_lover(int);

int main(int argc, UC* argv[])
{
    int fd, nr, i, kb=0;
    basename = argv[0];
    if (argc < 2) usage(0);
    file = argv[1];
    newfile = file;
    strcpy((char*)file1, (char*)file);
    if (argc > 2) usage(2);
//    if ((fd = open(argv[1],O_RDWR)) < 0)
//	usage(1);
    while (*file != 0) *file = to_lower(*(file++));
    link((char*)file1, (char*)newfile);
    unlink((char*)file1);
}

void usage(int err)
{
    switch (err){
    case 0: 	printf("\tYou have missed filename\n");
		break;
    case 1: 	printf("\tFile %s dosen't exists or permissions denied\n", file);
		break;
    default:	printf("\tToo many parameters\n");
		break;
    }
    printf("\t\tUsage:\n\t%s <filename>\n", basename);
    exit (1);
}

int to_lower(int ch){
    int ret = ch;
    if (isupper(ch))
	ret = tolower(ch);
    if (ch > 223)
	ret = ch - 32;
    if (ch == 179)
	ret = 163;
    return ret;
}
Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

а это просто удаляет входной файл, лол

anonymous
()
Ответ на: ??? от anonymous

Ты врешь!

echo Привет |tr '[:upper:]' '[:lower:]'
привет

touch TeStFiLe-ТеСТовыйФайл
ls
TeStFiLe-ТеСТовыйФайл
lowercase TeStFiLe-ТеСТовыйФайл
testfile-тестовыйфайл

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от odii

если исходный файл tXt.AbC и над ним сделать Shift+F6 с параметрами:

  • исходный шаблон: *.*
  • в: \U\2.\L\1

то в результате должен получится файл: ABC.txt

anonymous
()
Ответ на: комментарий от Eddy_Em

Ты врешь!

просто не все принадлежат твоей вере, великому koir-8. кстати, всегда хотел спросить, а почему не cp1251 или любая другая русская однобайтовая?

anonymous
()
Ответ на: комментарий от anonymous

а почему не cp1251 или любая другая русская однобайтовая?

Потому что юникс изначально и был на КОИ8-Р!

В принципе, конечно, пофиг. Главное — чтобы однобайтная.

А хрюникодофилы пусть страдают.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

P.S. кстати, если мой сишный "скрипт" в хрюникоде не работает (это понятно — я не рассчитывал на то, что его нерусские будут использовать), то tr обязан в любой кодировке работать. Даже хрюникоде. Если у тебя не работает, то это значит, что у тебя говно, а не система!

Мой "скрипт" желающие тоже модернизировать под некириллические языки могут. Только я не уверен, что там будет понятие "заглавная/малая" буква.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

Конечно. Был бы юникс на CP1251, я тоже сидел бы на CP1251, чтобы мой рабочий компьютер был совместим с остальными. А то по ssh с компьютера CP1251 заходить на КОИ8-Р как-то хреново. export LC_ALL=C не спасает от кириллических имен файлов и директорий.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

tr обязан в любой кодировке работать

нет, он не работает для уникода. можно даже к гуглу обратится, там шумиха по этому поводу знатная.

awk например может справится с кодировкой:

awk '{print toupper($0)}'

anonymous
()
Ответ на: комментарий от Eddy_Em

tr в текущей версии понимает только однобайтовые символы, а если совсем основательно к этому делу подходить, то туда надо будет запихать понятие кодировки входного и выходного текста. это никому не надо на сколько я понимаю (есть другие средства для таких манипуляций), и, следовательно, никто это не исправляет.

Для utf-8, даже если принудительно написать:

$ echo "Привет" | tr 'ПРИВЕТ' 'привет'
ѿрѸѲѵт

anonymous
()
Переместить файл "ABC" с исходным шаблоном:
*
[x] Метасимволы shell
в:
\L\1

Profit?

akk ★★★★★
()

man rename
Всё остальное — костыли :)

blexey ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.