Копирование файлов из каталогов, в имени которых есть пробелы

Копирование файлов из каталогов, в имени которых есть пробелы

Вот что я попробовал.

inputFile=$(zenity --file-selection --title "Test" --text "Please select the file for analysis." | sed -e "s/ /\\\ /g")

Я выполнил sedоперацию по замене пробелов на a \и a пробел, чтобы команда копирования заработала. Затем из графического интерфейса выбора файлов Zenity я выбрал файл, так что значение внутри inputFileбыло /home/username/Documents/Learning\ and\ Development/testfile.txt.

Теперь, когда я пытаюсь скопировать этот файл в свой рабочий каталог с помощью

cp $inputFile .

Но все равно возвращает ошибку,

cp: cannot stat ‘/home/user/Documents/Learning\\’: No such file or directory
cp: cannot stat ‘and\\’: No such file or directory
cp: cannot stat ‘Development/WhatsApp.apk’: No such file or directory

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

решение1

Вы можете легко сделать это, заключив в двойные кавычки:

cp "$inputFile" /destination/

Заключение символов в двойные кавычки ('"') сохраняет буквальное значение всех символов внутри кавычек, за исключением '$', '`', '\', Подробнее:http://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html

решение2

вы можете добавить * там, где появился пробел, и копирование можно сделать так:

 cp  /home/user/users*tst.txt  /home/user/Downloads

куда вы хотите скопировать пользовательский tst.txt в папку «Загрузки» из домашней папки

Связанный контент