Работая с Linux, вы можете столкнуться с некоторыми утилитами и приложениями, которые работают только с именами файлов, не содержащими пробелов. Мы не всегда сохраняем файлы в таком формате без пробелов и, возможно, нам придется искать обходной путь, который заменит пробелы в именах файлов символами подчеркивания '_'. Таким образом, ваши имена файлов не будут содержать пробелов, и вы сможете легко работать с ними во всех приложениях.
В этой статье мы расскажем вам о двух способах преобразования всех пробелов в именах файлов в символы подчеркивания, очень просто, через командную строку.
Моя папка, которую я буду использовать в качестве примера для этой статьи, содержит пробелы во всех именах файлов.
1 | ls |
Я буду использовать эту папку, чтобы объяснить, как я преобразовываю имена файлов в новый формат.
Метод 1: С помощью команды mv
В этом методе мы будем использовать команду Ubuntu mv в цикле for, чтобы переименовать все файлы/папки в заданном каталоге так, чтобы все пробелы в их именах были заменены символами подчеркивания.
Откройте командную строку Ubuntu, Терминал, либо через поиск в Application Launcher, либо сочетанием клавиш Ctrl+Alt+T.
Вот синтаксис команды, которую вы будете использовать:
1 | for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done |
Я выполнил ту же команду, чтобы заменить пробелы на подчеркивание в папке:
Когда я снова перечислил содержимое каталога, вы можете увидеть, что все имена файлов теперь содержат подчеркивания вместо пробелов.
Метод 2: Использование сценария для переименования файлов
В этом методе мы будем использовать сценарий bash, который использует команду mv для переименования имен файлов и папок таким образом, что все пробелы заменяются подчеркиванием.
Откройте приложение Terminal и перейдите в папку bin следующим образом:
1 | cd ~bin |
Теперь откройте новый файл скрипта в одном из ваших любимых текстовых редакторов. Мы будем использовать редактор nano, чтобы открыть пустой файл скрипта с именем replace_spaces.sh
1 | sudo nano replace_spaces.sh |
В этот пустой файл добавьте следующий сценарий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash for f in * do new="${f// /_}" if [ "$new" != "$f" ] then if [ -e "$new" ] then echo not renaming \""$f"\" because \""$new"\" already exists else echo moving "$f" to "$new" mv "$f" "$new" fi fi done |
Вместо того чтобы вводить весь скрипт в файл bash, вы можете скопировать его отсюда и вставить в Терминал с помощью комбинации клавиш Ctrl+Shift+V или с помощью опции Paste из меню правой кнопки мыши.
Вот как будет выглядеть ваш файл:
Теперь выйдите из файла с помощью сочетания клавиш Ctrl+X и сохраните файл в подсказке "Сохранить измененный буфер?", набрав Y и нажав Enter.
Для того чтобы сделать этот файл исполняемым скриптом, выполните следующую команду в Терминале:
1 | sudo chmod +x replace_spaces.sh |
Теперь вы готовы использовать сценарий в любой из своих папок.
Когда я запускаю сценарий в папке, я вижу, что все пробелы в именах файлов преобразованы в подчеркивания, как показано ниже:
Итак, это были два способа, с помощью которых вы можете переименовать файлы так, чтобы все пробелы в их именах были преобразованы в символы подчеркивания. Теперь любое приложение, которое вы используете, не будет не распознавать имена файлов, содержащие пробелы.