bash - 使用 shell 脚本时,如何复制名称中包含空格和 UNICODE 的文件?

标签 bash shell unicode file scripting

我有一个文件列表,我试图在 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/

相关文章:

包含二进制可执行文件的 Bash 脚本

bash - 如何在 nounset 时在 shell 中智能附加 LD_LIBRARY_PATH

vim - 在 vim 中更改文本外观

python - utf-16-le BOM csv 文件

linux - 如何创建一个正常运行的程序?因为我的程序永远运行,不会停止

perl - 使用 Perl 循环中的变量在 Perl 循环中运行 shell 命令

linux - shell:从具有已知键的字符串中提取键值

linux - RHEL Crontab 无法执行命令

python - python文件读取不读取许多表情符号字符

python - 如何提交调用我的 python 脚本的 SGE 作业