LINUX.ORG.RU

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


0

0

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

★★★★

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

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

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

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

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

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

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

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

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

acheron ★★★★
() автор топика

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

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

l07
()

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

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

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

Просто синтаксис такой у 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 ★★★
()
Ответ на: комментарий от qwe

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

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

acheron ★★★★
() автор топика
Ответ на: комментарий от acheron

Ну, если вспомнить, что у неё на выходе всего лишь список файлов...

Видимо можно. :)

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