Как получить доступ к файлам / каталогам с пробелами в имени? [дубликат]

Через терминал я не могу получить доступ к файлам или каталогам, имена которых содержат пробелы. Команда cd сообщает , что такого файла или каталога нет .

Есть ли способ сделать это или мне следует переименовать все файлы с пробелами?

9
задан 10 December 2017 в 00:46

2 ответа

Получить доступ к каталогу, имеющему пространство, промежуточное использование имени \<space> для доступа к нему. Можно также использовать кнопку Tab для автоматического завершения имени.

, Например:

guru@guru-Aspire-5738:~$ cd /media/Data/My\ Data/
guru@guru-Aspire-5738:/media/Data/My Data$.
9
ответ дан 23 November 2019 в 04:58

К использовать файлы с пробелами можно или использовать символ ESC или youse двойные кавычки.

пример:

cd new\ dir/

\ назван символом ESC, привыкшим к не расширение пространства, так же теперь колотите, читает пространство как часть имени файла.

Или можно использовать:

cd "new dir" 
<час>

Теперь для переименования файлов настолько легко переименовать все файлы с пробелами и пространством замены с подчеркиванием:

for file in * ; do mv "$f" "${f// /_}" ; done

взгляд на ответ здесь существует сценарий для переименования всех файлов и директоров рекурсивно.

сценарий: (Все права переходят к его владельцу)

#!/bin/bash

# set -o xtrace # uncomment for debugging

declare weirdchars=" &\'"

function normalise_and_rename() {
  declare -a list=("${!1}")
      for fileordir in "${list[@]}";
      do
          newname="${fileordir//[${weirdchars}]/_}"
          [[ ! -a "$newname" ]] && \
            mv "$fileordir" "$newname" || \
                echo "Skipping existing file, $newname."
      done
}

declare -a dirs files

while IFS= read -r -d '' dir; do
    dirs+=("$dir")
done < <(find -type d -print0 | sort -z)

normalise_and_rename dirs[@]

while IFS= read -r -d '' file; do
    files+=("$file")
done < <(find -type f -print0 | sort -z)

normalise_and_rename files[@] 
3
ответ дан 23 November 2019 в 04:58

Другие вопросы по тегам:

Похожие вопросы: