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 (всего исправлений: 2)

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

не подходит нужно именно с кавычками

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

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

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

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

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

mike@pet64 ~/tmp $ echo «some dir» | sed 's/\ /\\\ /g'
some\ dir
Эта некая программа не на шелле?

Получается не красиво.

4.2

imul ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.