LINUX.ORG.RU

mv * с пробелами в пути

 


0

1

Доброго времени! Требуется переместить всё содержимое каталога «some dir» куда-нибудь.

Пробую:

mv «ok/some dir/*» ok/

mv: невозможно выполнить stat для «ok/some dir/d*»: Нет такого файла или каталога

Важный момент забыл. Перемещать нужно не только все содержимое но и выборочно, например: mv «ok/some dir/file*» ok/ mv «ok/some dir/file?» ok/

Ответ на: комментарий от Borland

Тебе в первом же сообщении дали правильный ответ. Используй экранирование с помощью бэкслэша.
ok/some\ dir/*

imul ★★★★★ ()
Ответ на: комментарий от imul

Я не буду разъяснять подробности, но необходимо именно с кавычками. Иначе в программе придется анализировать путь на пробелы и добавлять бэкслеш. Получается не красиво.

Borland ()
Ответ на: комментарий от Borland
[aedeph@aedeph sandbox]$ ls q\ w/
1 2  2 3
[aedeph@aedeph sandbox]$ ls as/
[aedeph@aedeph sandbox]$ mv q\ w/* as/
[aedeph@aedeph sandbox]$ ls as/
1 2  2 3
[aedeph@aedeph sandbox]$ bash --version|head -n1
GNU bash, version 4.2.24(1)-release (x86_64-redhat-linux-gnu)
aedeph_ ★★ ()
Ответ на: комментарий от Borland

На с++ наверняка есть что-либо уже готовое для подобного преобразования строк.
Спроси в development, там про C++ быстрее ответят.

imul ★★★★★ ()
Ответ на: комментарий от Borland

давно бы уже написал трехстрочную функцию и не парился )

tim91 ()

шелл - наш друг, это знают все вокруг
когда по табу срабатывает автодополнение имени файла, то там наглядно видно как сам шелл экранирует пробелы

zolden ★★★★★ ()
Ответ на: комментарий от Borland

На С++

не занимайся хнёй.

man readdir

man 2 link, man 2 linkat, man 2 unlink

там есть ссылки, и ЕМНИП примеры. mv внутри одной ФС это создание хардлинка + удаление старого имени.

drBatty ★★ ()
Ответ на: комментарий от Borland

Я не буду разъяснять подробности, но необходимо именно с кавычками. Иначе в программе придется анализировать путь на пробелы и добавлять бэкслеш. Получается не красиво.

войди в этот каталог, и там перемещай. т.е.

cd "ok/some dir"
mv * ..

но выполнять шелл-команды из С, это ИМХО идиотизм. Вот такие. Это-же обёртки над сишными функциями. Вы из С вызываете обёртки на С.

drBatty ★★ ()

Нормальные люди пользуются zsh.

anonymous ()

Блин, гуглом уже всем разучились пользоваться? Экранировать все спецсимволы.

IPR ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.