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

Оболочка Linux

В средах Unix много работы выполняется с помощью интерпретатора команд, на самом деле во многих системах даже не установлена ​​среда рабочего стола. Следовательно, в Linux вы обычно много работаете с терминала. При работе с именами файлов и каталогов иногда бывает сложно, когда в их именах есть пробелы. Знать, как избежать этих маленьких проблем, не составит труда, но это правда, что удобнее, когда у них нет этих пространств ...

Если ты не знаешь как использовать имена с пробелами из терминала или если вы хотите легко удалить эти пробелыВ этой статье вы узнаете все, что вам нужно, чтобы сделать работу пользователя максимально удобной, когда вы работаете с GNU / Linux ежедневно. Отныне пробелы имен не будут для вас препятствием ...

Как работать с пробелами

Пространства имен Linux

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

  • к указать, что в названии есть пробел, вы можете использовать косую черту или обратную косую черту, то есть \. Например, если вы пытаетесь написать имя, которое вы видите на изображении «RISC-V docs», вы можете написать «RISC-V \ docs» (без кавычек). Таким образом вы сообщите Bash, что это пробел, а не то, что вы ввели несколько параметров для этой команды, разделенных пробелом.
  • Вы также можете использовать двойные кавычки «» заключить имя в пробелы, указывая оболочке, что это не отдельные параметры, а одно и то же имя. Например, в предыдущем примере с cd, если вы хотите перейти в этот каталог с пробелами, вы можете использовать:
cd "RISC-V docs"

  • Еще одна уловка состоит в том, чтобы начать вводить первые буквы имени и нажимать клавишу TAB (та, что находится чуть выше Caps Lock). Таким образом, имя будет заполнено автоматически. Это не сработает, если есть несколько имен, которые начинаются одинаково, например, если есть «RISC-V docs», а «RISC-V isa» не будет работать. Да, это сработает в случае наличия «документов RISC-V» и «документов RISC-I», поскольку, как только вы введете символ I, он узнает его имя ...

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

Как заменить пробелы

заменить пробелы подчеркиванием Linux

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

  • Перейдите в каталог, где найдены имена с пробелами который вы хотите заменить любым символом. В этом случае я использовал подчеркивание, но вы можете заменить этот символ на любой другой, вам просто нужно изменить команду.
  • Оказавшись внутри каталога, вы можете использовать эту команду, которая изменит все пространства имен на _. Будьте осторожны, потому что если есть имена, в которых вы хотите сохранить пробелы, вы должны учитывать, что эта команда изменит их все:
for file in *; do mv "$file" `echo $file | tr ' ' '_'`; done

  • к идти один за другимХотя это непрактично, вы можете использовать следующую команду в тех случаях, когда вы хотите заменить пробелы только для одного имени, а не для всех автоматически:
mv nombre\ con\ espacios nombre_sin_espacios

  • Другой вариант использовать сценарий который вы можете вызывать всякий раз, когда хотите заменить пробелы символами подчеркивания. Таким образом, вы можете запускать его в любом каталоге без необходимости писать команду каждый раз, когда она вам нужна. Для этого вам нужно использовать свой любимый текстовый редактор и создать файл с именем, например, spaceskiller.sh, сохранить содержимое, дать ему разрешения на выполнение и ввести его в путь, указанный в переменной среды $ PATH (например: / usr / bin), и поэтому вам нужно будет только вызвать его имя, без необходимости указывать путь, где находится .sh. Хорошо, сказав это, содержание скрипта будет следующим:
<pre>#!/bin/bash

for f in *
do
  new="${f// /_}"
  if [ "$new" != "$f" ]
  then
    if [ -e "$new" ]
    then
      echo no se renombró \""$f"\" porque \""$new"\" ya existe
    else
      echo renombrando "$f" a "$new"
    mv "$f" "$new"
  fi
fi
done</pre>

Если вы выбрали сценарий и ввели его в любой из каталогов $ PATH, каждый раз, когда вы находитесь внутри каталога и хотите заменить пробелы подчеркиванием (или любым другим символом, если вы его измените), вам нужно будет только работать:

./spaceskiller.sh

Надеюсь, я помог вам с этим уроком, вы можете оставлять свои комментарии с любыми вопросами или предложениями ...


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Андрес сказал

    Большое спасибо, ваш скрипт очень полезен