Скрипт perl rename (входит в стандартную поставку debian/ubuntu, или доступен здесь: http://tips.webdesign10.com/files/rename.pl.txt ) переименует файлы на основе регулярного выражения. При использовании -n
он просто выведет именованные файлы без фактического переименования, позволяя вам проверить их перед выполнением действия:
# Check before renaming...
$ rename -n 's/^.*=//' *
1xxx_DSAFDSAFDSFA=FDAFDSAFDSAFSDA=12341243142 renamed as 12341243142
# now rename all files
$ rename 's/^.*=//' *
Это очень гибкий инструмент, поскольку он может легко работать с файлами на основе подстановочных знаков (например, *
для всех файлов или *.txt
для всех текстовых файлов), и он принимает любое регулярное выражение perl.
ESRThe Art of Unix Programmingутверждает, что это:
We'll examine troff in more detail in Chapter 18; for now, it's sufficient to note that it is a good example of an imperative minilanguage that borders on being a full-fledged interpreter (it has conditionals and recursion but not loops; it is accidentally Turing-complete).
(«Случайно» в отличие от m4
, который считается «преднамеренно завершенным по Тьюрингу -».)
Да, troff завершен по Тьюрингу -. Он поддерживает произвольную рекурсию и условное ветвление, чего достаточно. У него также есть регистры и различные другие способы хранения данных, что снова дает вам другой путь.
Полнота по Тьюрингу не означает, что очень сложные программы практичны -, а только то, что они каким-то образом теоретически возможны на некотором уровне удаления -, а ее отсутствие не означает, что они не применимы., так что ни то, что troff является полным по Тьюрингу -, ни отсутствие сложных программ так или иначе ничего особенного не говорят об этом.
Полнота по Тьюрингу, как правило, не является свойством, которое означает что-либо полезное для пользователя. Все это означает, что вы можете смоделировать с ее помощью машину Тьюринга, а не то, что вы хотели бы, и не то, что результат, который вы получите от нее, будет чем-то похож на то, что вы ожидаете прочитать.. Ввод или вывод может быть просто числом или даже количеством раз, когда что-то появляется, а не чем-то полезным, и виды машин, которые вы в конечном итоге моделируете, и их программы часто едва понятны для начала.
Многие языки и системы, между прочим, являются полными по Тьюрингу -, но неприменимы в разумных пределах для какого-либо фактического программирования в этом подмножестве (, например, Конвеевская игра жизни или CSS ), и некоторые языки, которые являются полезные для реального программирования не являются полными по Тьюрингу -(например, Agda ). Определяющими характеристиками действительно является то, что вы можете
Часто эти свойства -, особенно отсутствие -завершения -, на самом деле нежелательны, возможно, в том числе и для troff. За пределами теоретической информатики и языкового дизайна полнота по Тьюрингу не является очень интересным свойством практически того времени, несмотря на то, что она цепляет.