Переместите все содержимое из папки в другую с помощью сценария оболочки

Почему это работает?

mv /Users/diogosaraiva/Music/Youtube/Novas/* /Users/diogosaraiva/Music/Youtube/Tratadas  

…но приведенные ниже команды не работают?

mv "/Users/diogosaraiva/Music/Youtube/Novas/*" "/Users/diogosaraiva/Music/Youtube/Tratadas"

Мне пришлось переименовать папку «Youtube» из «Youtube — Загрузки», просто потому, что это не работает:

mv "/Users/diogosaraiva/Music/Downloads - Youtube/Novas/*" "/Users/diogosaraiva/Music/Downloads - Youtube/Tratadas"

Я хочу интегрировать это в приложение Automator . Есть ли лучший способ переместить все содержимое из папки в другую с помощью Automator.app?

Ответы (1)

Символ пробела используется для bashразделения различных параметров команды, поэтому вам необходимо защитить/экранировать его, если он встречается в именах файлов (или других параметрах):

mv /Users/diogosaraiva/Music/Downloads\ -\ Youtube/Novas/*  /Users/diogosaraiva/Music/Downloads\ -\ Youtube/Tratadas

Вы также можете использовать кавычки, чтобы защитить символы пробела от неправильной интерпретации оболочкой, но вам нужно переместить их *за пределы кавычек, чтобы разрешить расширение подстановочных знаков:

mv "/Users/diogosaraiva/Music/Downloads - Youtube/Novas/"* "/Users/diogosaraiva/Music/Downloads - Youtube/Tratadas"
Я работал двумя командами... Однострочная команда для этого существует? Спасибо
На самом деле это одна строка, но я изменил образец, чтобы сделать его более очевидным.