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

Через терминал я не могу получить доступ к файлам или каталогам с пробелами в их именах. То cd команда говорит no such file or directory.

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

Чтобы получить доступ к каталогу, имеющему пробел между именем, используйте \<space> чтобы получить к нему доступ. Вы также можете использовать Tab кнопка для автоматического заполнения имени.

Например :

guru@guru-Aspire-5738:~$ cd /media/Data/My\ Data/guru@guru-Aspire-5738:/media/Data/My Data$.

Чтобы использовать файлы с пробелами, вы можете либо использовать escape-символ, либо использовать двойные кавычки.

пример:

cd new\ dir/

\ называется escape-символом, используется для того, чтобы не расширять пробел, поэтому теперь bash считывает пробел как часть имени файла.

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

cd "new dir" 

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

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

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

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

#!/bin/bash# set -o xtrace # uncomment for debuggingdeclare 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 fileswhile 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[@]