Удаление определенных символов в строке

В настоящее время я пишу скрипт bash и получил список местоположений файлов. Однако я заметил, что в некоторых местах файлов в имени файла есть пробелы, например, например. : / 1 2 3.txt Такие файлы влияют на использование таких команд, как cp в моем случае. Использование «» и экранирование приводит к пробелу после «». Например, "/ 1 2 3.txt" с пробелом перед расположением файла, я получил сообщение об ошибке "cp: not stat` / 1 2 3.txt ': Нет такого файла или каталога ". Есть ли другой способ заключить в кавычки местоположение файла с помощью "", чтобы можно было использовать команду cp?

0
задан 25 July 2013 в 10:53

1 ответ

Скопируйте все файлы, содержащие пробелы в именах файлов, в новые файлы с тем же именем, содержащим подчеркивание, вместо пробелов из текущего каталога:

for f in *\ *; do cp -- "$f" "${f// /_}"; done

См. BashFAQ 20 , как обращаться имена файлов безопасно.

0
ответ дан 25 July 2013 в 10:53

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

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