Поиск по сайту:

Как заменить пробелы в именах файлов символами подчеркивания в оболочке 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

Теперь вы готовы использовать скрипт в любой из ваших папок.

Когда я запускаю сценарий в папке «Загрузки», я вижу, что все пробелы в именах файлов преобразованы в символы подчеркивания следующим образом:

Итак, это были два способа переименовать файлы, чтобы все пробелы в их именах были преобразованы в символы подчеркивания. Теперь любое приложение, которое вы используете, без проблем распознает имена файлов, содержащие пробелы.

Статьи по данной тематике: