Как заменить пробелы в именах файлов символами подчеркивания в оболочке Linux
Работая с Linux, вы можете столкнуться с некоторыми утилитами и приложениями, которые работают только с именами файлов, не содержащими пробелов. Мы не всегда сохраняем файлы в этом формате «без пробелов», и, возможно, придется искать обходной путь, который заменяет пробелы в именах файлов символами подчеркивания «_». Таким образом, имена ваших файлов не будут содержать пробелов, и вы сможете легко работать с ними во всех приложениях.
В этой статье мы объясним два способа очень простого преобразования всех пробелов в именах файлов в символы подчеркивания с помощью командной строки.
Мы выполнили команды и процедуры, упомянутые в этой статье, в системе Ubuntu 22.04 LTS.
Папка «Мои загрузки», которую я буду использовать в качестве образца для этой статьи, содержит пробелы во всех именах файлов.
ls Downloads
Я буду использовать эту папку, чтобы объяснить, как преобразовать имена файлов в новый формат.
Способ 1: с помощью одной команды mv
В этом методе мы будем использовать команду Ubuntu mv в цикле for, чтобы переименовать все файлы/папки в данном каталоге, чтобы все пробелы в их именах были заменены символами подчеркивания, и использовать echo для отображения вывода прогресса.
Откройте командную строку Ubuntu, Терминал, либо с помощью поиска в Панели запуска приложений, либо с помощью ярлыка Ctrl+Alt+T.
Вот синтаксис команды, которую вы будете использовать:
for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
Я выполнил ту же команду, чтобы заменить пробелы подчеркиваниями в папке «Загрузки»:
Когда я снова перечислил содержимое каталога, вы увидели, что все имена файлов теперь содержат подчеркивания вместо пробелов.
Способ 2. Использование сценария для переименования файлов
В этом методе мы будем использовать сценарий bash, который использует команду mv для переименования имен файлов и папок таким образом, чтобы все пробелы были заменены символами подчеркивания.
Откройте приложение «Терминал» и перейдите в папку bin следующим образом:
cd ~bin
Теперь откройте новый файл сценария в одном из ваших любимых текстовых редакторов. Мы воспользуемся редактором nano, чтобы открыть пустой файл сценария с именем replace_spaces.sh.
sudo nano replace_spaces.sh
В этот пустой файл добавьте следующий скрипт:
#!/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 или используя опцию «Вставить» справа. нажмите меню.
Вот как будет выглядеть ваш файл:
Теперь выйдите из файла с помощью сочетания клавиш Ctrl+X и сохраните файл в поле «Сохранить измененный буфер? », набрав Y и нажав Enter.
Чтобы сделать этот файл исполняемым скриптом, выполните следующую команду в своем терминале:
sudo chmod +x replace_spaces.sh
Теперь вы готовы использовать скрипт в любой из ваших папок.
Когда я запускаю сценарий в папке «Загрузки», я вижу, что все пробелы в именах файлов преобразованы в символы подчеркивания следующим образом:
Итак, это были два способа переименовать файлы, чтобы все пробелы в их именах были преобразованы в символы подчеркивания. Теперь любое приложение, которое вы используете, без проблем распознает имена файлов, содержащие пробелы.