Shell脚本复制所有文件和子目录 - 包含空格的文件夹名称

时间:2015-09-03 00:33:36

标签: shell copy

我正在尝试使用shell脚本复制所有文件和子目录。问题是一些文件夹名称有空格。

cp -r "//shrdata/Legal/test location/test folder/*" "//shrdata/Legal/open access/"

我得到的错误是“系统无法找到指定的文件”

1 个答案:

答案 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一起使用时,此表单可以正常使用。