LINUX.ORG.RU

mv, bash и регулярные выражения


0

0

Объясните, пожалуйста, простой способ переименовать много файлов. Например, приписать расширение .gif всем файлам в данной директории (или всем файлам без расширения).

★★★★

Re: mv, bash и регулярные выражения

все просто до ужаса

cd /где_тебе_надо_переименновать
ls -1 |
while read fname; do mv "$fname" "$fname.gif"; done

fura13 ★★★ ()
Ответ на: Re: mv, bash и регулярные выражения от fura13

Re: mv, bash и регулярные выражения

> Объясните, пожалуйста...

объясняю : 
1. ls -1            <<< создаешь сипсок файлов (каждая строка это имя файла)
2. |                <<< перенаправляешь его
3. while read fname <<< на цикл считывания строк
4. mv "$fname"      <<< внутри цикла делаешь что надо

p.s.: "$fname" <<< кавычки необходимы для пробелов и прочих спец символов в именах файлов.

fura13 ★★★ ()
Ответ на: Re: mv, bash и регулярные выражения от fura13

Re: mv, bash и регулярные выражения

:) Вначале я просто хотел mv * *.gif . Не вышло :)

1,2 и 4 я и сам сообразил. Про кавычки тоже сообразил бы рано или поздно. А вот 3 не нашёл, так как не знал что именно искать. Ещё раз спасибо.

acheron ★★★★ ()

Re: mv, bash и регулярные выражения

find ./ -type f -exec mv "{}" "{}.gif" \;

Плюсы: не переименовыает дирректории (указан -type f). Если нужны только в текущей директории, то дабавить параметр -maxdepth 1

l07 ()

Re: mv, bash и регулярные выражения

вообще * лучше не пользоваться (cp *, mv *), т.к. из * получается список, а при очень большом количестве файлов такой список часто не прокатывает (тот же cp, mv скажет о превышенном количестве аргументов).

l07 ()
Ответ на: Re: mv, bash и регулярные выражения от acheron

Re: mv, bash и регулярные выражения

>Тогда уж спрошу: зачем нужно \; ?

Просто синтаксис такой у find -exec, чтоб знал где команда заканчивается. :)

man find:

EXAMPLES

.....

find . -type f -exec file '{}' \;

Runs 'file' on every file in or below the current directory. Notice that the braces are enclosed
in single quote marks to protect them from interpretation as shell script punctuation. The
semicolon is similarly protected by the use of a backslash, though ';' could have been used in
that case also.

qwe ★★ ()
Ответ на: Re: mv, bash и регулярные выражения от qwe

Re: mv, bash и регулярные выражения

Ну да, использовать команду "искать" когда все искомые файлы на виду, и не для поиска, а для переименования - сам бы не додумался :)

А что, теперь можно удалять сообщения не убивая всю цепочку?

acheron ★★★★ ()

Re: mv, bash и регулярные выражения

man rename

anonymous ()

Re: mv, bash и регулярные выражения

используй KRename

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