我有一个文件列表,我试图在 bash shell 脚本中复制和移动(使用 cp 和 mv)。我遇到的问题是,我无法获得任何命令来识别大量文件,这似乎是因为文件名包含空格和/或 unicode 字符。我找不到任何开关来解码/重新编码这些字符。相反,例如,如果我复制“file name.xml”,我会得到“*.xml”和一个脚本错误,指出找不到我的结果文件。有谁知道将处理这些文件的设置或命令?
编辑(添加当前代码): 当我运行时:
MacBookPro:Desktop$ ./script.sh
#!/bin/sh
dateVar=`date +%Y-%m-%d`
mkdir /Volumes/Documents/SMSarchive/$dateVar
cd /Volumes/Documents/SMSarchive/SMSdrop
for i in *.xml
do
cp $i /Volumes/Documents/SMSarchive/$dateVar/$dateVar-$i
done
我收到消息:
用法:cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] 源文件目标文件 cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] 源文件 ... 目标目录
...当它点击“cp”命令时。实际上还有更多的脚本,进一步处理复制的文件。使用“常规”文件名,例如'file.xml',一切正常。只有带空格或 Unicode 字符的文件,我才会遇到问题。
最佳答案
空格问题表示引用不充分。以下是错误的:
someprogram $file
正确的版本如下:
someprogram "$file"
关于bash - 使用 shell 脚本时,如何复制名称中包含空格和 UNICODE 的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2550791/