Домашняя » как » Shell Geek переименовывает несколько файлов одновременно

    Shell Geek переименовывает несколько файлов одновременно

    Допустим, у вас есть каталог с сотнями файлов с неправильными именами файлов, и вы хотите заменить каждое имя файла, содержащее тестовое задание с тычок. (это надуманный пример). Мы можем легко сделать это с помощью команды «for» в bash, в сочетании с небольшим количеством доброты bash. Сегодня мы узнаем, как заменить текст в переменной в цикле for.

    Команда «для» работает так:

    для var in; do $ var; done

    Вы можете заменить с любым шаблоном совпадения файлов, например * или * .txt, и вы можете заменить с любой командой Linux. Команда будет выполняться последовательно для каждого файла, соответствующего шаблону совпадения файлов..

    Именно здесь обработка переменных bash делает ее еще более интересной. Вместо того, чтобы делать что-то вроде «mv $ var», мы можем заменить текст в имени файла следующим синтаксисом:

    $ Вар / originaltext / ReplaceText

    Так что теперь, если мы запустим эту команду в нашем каталоге:

    для f в *; сделать mv $ f $ f / test / prod; сделано

    Для каждого файла, соответствующего *, bash выполнит команду, подобную этой:

    mv test.config prod.config

    Я обнаружил, что знание оболочки неоценимо при администрировании серверов или просто для управления вашей коллекцией файлов, и сэкономило мне часы того, что в противном случае было бы ручной работой.

    И да, я понимаю, что есть ряд инструментов, которые могут выполнить переименование нескольких файлов.