Очень простой вопрос, но меня беспокоит. Я хочу скопировать все файлы в одну папку в другую папку в сценарии оболочки. Как это:Shell Script: копирование файлов с помощью подстановочных знаков (*) из одной папки в другую.
#!/bin/sh
cp data/* /tmp/data
Но получил error: zsh:1: no matches found: data/*
Чтение различных сообщений на StackOverflow, как здесь: Copying files with wildcard (*) to a folder in a bash script - why isn't it working? Я пробовал:
cp "data"/* /tmp/data
Error: zsh:1: no matches found: data/*
cp -r data /tmp/data
Error cp: cannot stat `data': No such file or directory
Я мог бы проверить папку данных содержит файлы, и я m в папке данных родительского каталога. Если я сделаю ls data
в скрипте, содержимое его будет правильно напечатано.
Может ли кто-нибудь помочь? Я использую zsh.
Каков текущий рабочий каталог при запуске скрипта? (То есть, что такое вывод, если вы вызываете 'pwd' непосредственно перед вызовом' cp'? – chepner
Как вы запускаете скрипт? Я удивлен, что вы получаете zsh-ошибку о 'data/*' в строке 1 когда это скрипт 'sh', где строка 1 является комментарием. –
@chepner Текущий каталог является родительским каталогом данных. Как я уже сказал, добавив ли я данные' ls' после команды cp в скрипте, он распечатает папку – ruyuan