我正在尝试使用shell脚本复制所有文件和子目录。问题是一些文件夹名称有空格。
cp -r "//shrdata/Legal/test location/test folder/*" "//shrdata/Legal/open access/"
我得到的错误是“系统无法找到指定的文件”
答案 0 :(得分:2)
尝试:
cp -r "/shrdata/Legal/test location/test folder"/* "/shrdata/Legal/open access/"
要使*
正常工作,它必须在引号之外。
假设我们有test folder
个文件:
$ ls -1 test\ folder/
file1
file2
现在,让我们尝试将*
放在引号中:
$ echo "test folder/*"
test folder/*
因为*
在引号中,所以它不会扩展为文件名列表。相反,它仅被视为文字字符。因此,如果我们尝试以这种方式复制文件,我们将收到文件未找到错误,因为没有文件名为*
:
$ cp "test folder/*" target
cp: cannot stat ‘test folder/*’: No such file or directory
如果我们将*
放在引号之外,则会执行路径名扩展:
$ echo "test folder"/*
test folder/file1 test folder/file2
这意味着与cp
一起使用时,此表单可以正常使用。