Как заменить пробелы в именах файлов символами подчеркивания в оболочке Linux

При работе с Linux вы можете столкнуться с некоторыми утилитами и приложениями, которые работают только с именами файлов, которые не содержат пробелов. Мы не всегда сохраняем файлы в этом формате «без пробелов» и, возможно, придется искать обходной путь, который заменяет пробелы в именах файлов символами подчеркивания «_». Таким образом, ваши имена файлов не будут содержать пробелов, и вы сможете легко работать с ними во всех приложениях.

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

Мы запустили команды и процедуры, упомянутые в этой статье, в системе Ubuntu 18.04 LTS.

Папка «Мои загрузки», которую я буду использовать в качестве примера для этой статьи, содержит пробелы во всех именах файлов.

$ ls Downloads

Я буду использовать эту папку, чтобы объяснить, как я преобразую имена файлов в новый формат.

Метод 1: С помощью одной команды mv

В этом методе мы будем использовать команду Ubuntu mv в цикле for для переименования всех файлов / папок в данном каталоге, чтобы все пробелы в их именах заменялись символами подчеркивания.

Откройте командную строку Ubuntu, Terminal, либо с помощью поиска в Application Launcher, либо с помощью сочетания клавиш Ctrl + Alt + T.

Вот синтаксис команды, которую вы будете использовать:

$ for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done

Я выполнял то же самое Команда для замены пробелов на подчеркивания в моей папке загрузок:

Когда я снова перечислил содержимое каталога, вы можете видеть, что все имена файлов теперь содержат подчеркивания вместо пробелов.

Метод 2: Использование сценария для переименования файлов

В этом методе мы будем использовать сценарий bash, который использует команду mv для переименования имен файлов и папок таким образом, что все пробелы заменяются подчеркиваниями.

Откройте приложение Terminal и перейдите в папку 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, или используя опцию Paste из контекстного меню.

Вот как Ваш файл будет выглядеть следующим образом:

Теперь закройте файл с помощью сочетания клавиш Ctrl + X и сохраните файл в окне «Сохранить измененный буфер?», набрав Y, а затем нажмите Enter.

Чтобы сделать этот файл исполняемым сценарием, запустите следующую команду в своем терминале:

$ sudo chmod +x replace_spaces.sh

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

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

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

Комментарии