2013-05-19 3 views
1

У меня есть тысячи файлов внутри каталога Мне нужно переименовать добавление префикса типа «th_», чтобы файлы были th_65461516846.jpg , но я не могу из-за ошибка "аргумент слишком долго"добавить префикс к файлам с переименованием - слишком длинный аргумент

Я использовал эту команду

переименовать 's/^/th_ /' *

спасибо!

+0

Как долго полный путь с полученным именем? https://fogbugz.bitvise.com/default.asp?WinSSHD.1.3867.1 –

+0

Какую оболочку вы используете? Трудно сказать из вашего описания, если имя файла слишком длинное или расширение '*' есть. В StackOverflow важно дать точную ошибку; например, если сообщение об ошибке «Список аргументов слишком длинное» сильно отличается от «Filename too long». Мой ответ предполагает, что вы получили сообщение об ошибке. – msw

+0

слишком длинное объявление слишком много файлов. извините, что я новичок вообще – Gabriele

ответ

0

Программа xargs используется для разрыва командных строк в несколько команд, чтобы избежать раздувания предела длины линии. В вашем случае, вы будете использовать:

ls | xargs rename 's/^/th_/' 

Который раз выполняет rename с частью выходного ls, пока список файлов исчерпан. Помните, что эта идиома требует особого внимания, если имена файлов имеют пробелы или другие забавные символы в них (которые я предполагаю, не так основаны на вашем примере).

+0

не работал :( ошибок нет – Gabriele

+0

Я фактически протестировал переименование/^/th_/'* в образец каталога с 3 файлами, а id не работал – Gabriele

+0

для i in *; do mv $ i th _ $ {i #}; done Через некоторое время он дал мне сообщение как «mv: target' .jpg« не каталог », но он продолжал работать и переименовывался. – Gabriele

0

Это один сделал работу

for f in *; do mv "$f" "${f/9/th_}";done 

или

for f in * ; do mv $f th_${f#} ; done 

Я не знаю, что отличается между 2, но в моем случае они оба работают.