LINUX CP: мне нужно скопировать все файлы из одного каталога в другой без копирования каких-либо подкаталогов

Мне нужно скопировать файлы из одного каталога в другой без копирования каких-либо подкаталогов. Количество и имя подкаталогов являются динамическими, поэтому я не могу --exclude определенные каталоги или использовать параметр -r. Как я могу исключить все подкаталоги?

КОД1:

cp '/media/lm1/My Passport/OneDrive/Music/Yes/*.*' '/home/lm1/Music/Archive'

РЕЗУЛЬТАТ1:

p: cannot stat '/media/lm1/My Passport/OneDrive/Music/Yes/*.*': No such file or directory

КОД2:

cp '/media/lm1/My Passport/OneDrive/Music/Yes/*' '/home/lm1/Music/Archive'

РЕЗУЛЬТАТ2:

p: cannot stat '/media/lm1/My Passport/OneDrive/Music/Yes/*': No such file or directory

КОД3:

cp '/media/lm1/My Passport/OneDrive/Music/Yes' '/home/lm1/Music/Archive'

РЕЗУЛЬТАТ3:

cp: -r not specified; omitting directory '/media/lm1/My Passport/OneDrive/Music/Yes'

person pQL7CmRP2i4    schedule 18.03.2021    source источник


Ответы (2)


Шаблоны глобусов (шаблон *.*) не работают в кавычках, но вы можете переместить глобус за пределы кавычек следующим образом:

cp '/media/lm1/My Passport/OneDrive/Music/Yes/'*.* '/home/lm1/Music/Archive'
person Geno Racklin Asher    schedule 18.03.2021
comment
Интерполяция действительно связана с двойными кавычками, но это не то, что вы представили. И то, что вы представили, будет одинаково хорошо работать, если двойные кавычки будут заменены апострофами/одинарными кавычками. - person John Bollinger; 18.03.2021
comment
Совершенно верно - отредактирую, чтобы исправить формулировку - person Geno Racklin Asher; 18.03.2021

Вместо этого попробуйте cp /media/lm1/My\ Passport/OneDrive/Music/Yes/* /home/lm1/Music/Archive.

Использование кавычек останавливает расширение оболочки, поэтому вместо этого избегайте символа пробела.

person Ken Y-N    schedule 18.03.2021
comment
Это сработает, но выдаст сообщение об ошибке для любого каталога, в который расширяется звездочка. - person user1934428; 19.03.2021