У меня не было большого успеха в поиске Linux-версии namemangler , для которой мне нужно переименовать 1000 файлов, чтобы они были читаемыми в Windows.
Кто-нибудь знает о программе Linux, которая может сделать это?
Если нет, то скрипт может работать, так как мне нужно только переименовать все файлы в папке, скажем, в первые 16 символов. Я подозреваю, что маршрут сценария может стоить идти вниз, но не уверен, с чего начать.
Ответы:
В Debian, Ubuntu и производных, если вы введете
man rename
в командной строке, вы получите страницу руководства для утилиты переименования, которая позволяет использовать произвольные Perl-подобные команды регулярного выражения для переименования.Например, это сократит (усечив) все файлы в текущем каталоге до длины пять:
Он работает, захватывая первые пять символов, а затем используя их в подстановке, удаляя остальные.
Другой пример - сократить имена файлов (без расширения) до пяти символов, сохранив расширение:
Он захватывает две группы: первая - первые пять символов, вторая - расширение. Это превратится
myCarefullyCraftedDocument.pdf
вmyCar.pdf
.Предупреждение. Используйте это осторожно, желательно с копией своего каталога или сначала создав резервные копии. Вы были предупреждены!! Как минимум, используйте
rename -n
сначала, что покажет вам, что будет сделано, на самом деле не делая этого.источник
Вы можете переместить конфликтующие файлы в другой каталог:
источник
Вы можете написать скрипт для сокращения имен файлов и удаления символов, которые не нравятся Windows в нескольких строках bash. Предупреждение, непроверенный код, набранный прямо в моем браузере.
Если вам нужно перейти в подкаталоги, вызовите скрипт оболочки из
find -depth -exec …
. Или используйте zsh вместо bash; в zsh**/*(od)
рекурсивно расширяется до всех файлов в текущем каталоге, сначала с более глубоко вложенными файлами.источник
Сценарии оболочки / python / perl для такого рода вещей просто хороши, но кажется, что приложение с графическим интерфейсом будет лучшим для вас, поэтому я бы порекомендовал pyRenamer , который может делать именно то, что вы хотите, среди многих других вещей (простые общие операции через предустановки [избавление от пробелов, усечение имени файла из одной точки в другую], простой поиск / замена, сложное регулярное выражение, предварительный просмотр и т. д.).
Ваш дистрибутив может даже иметь его в своем репозитории программного обеспечения (Fedora делает).
источник
Некоторые системы не имеют
rename
команды, поэтому в качестве альтернативы ответу paxdiablo, вот как сделать то же самоеmv
.-b
Флаг в движении создает резервную копию файлов , которые будут удалены или перезаписаны. Изменяя шаблон глобуса в цикле for, вы можете настроить, какие файлы он запускает, используя*
его для запуска всех файлов.источник
echo
и канал (может быть очень дорого, если у вас много файлов), используйте вместо этого heredoc или herestring.eval 'echo $BASH_SUBSHELL'
иeval 'echo $BASH_SUBSHELL' | cat
.time
используя цикл с использованиемecho $i | sed
и другой с использованиемsed ... <<<$i
, и эта строка заняла около 2/3 времени эха.<<
запускает здесь <i> документ </ i>, который состоит из нескольких строк и требует разделителей.<<<
создает здесь <i> строку </ i>, которая просто принимает одну переменную / строку. Попробуйте этоvar=abc // cat<<<$var // cat <<$var
.Если вам нужно поэкспериментировать с переименованием файлов и если в вашей системе установлены библиотеки KDE (или вы не против их добавить), посмотрите krename.
Это позволяет вам делать довольно много простых переименований задач непосредственно с помощью инструментов, а также позволяет использовать регулярные выражения для более сложных ситуаций.
Он показывает вам предварительный просмотр переименованных файлов при создании условий переименования. Это также позволяет вам снова переименовывать те же файлы, что полезно, если вы хотите сделать что-то сложное, если поэтапное выполнение этого процесса уменьшит сложность каждого этапа до чего-то, что вы сможете быстро выяснить.
источник
источник