我目前正在编写一个 bash 脚本,并且获得了一个文件位置列表。但是我注意到某些文件位置的文件名中有空格,例如:/1 2 3.txt 此类文件会影响命令(例如,在我的情况下是 cp)的使用。使用“”并将其转义会导致“”后面出现空格。例如:“/1 2 3.txt”在文件位置前面有一个空格,我收到一条错误消息,指出“cp:无法统计`/1 2 3.txt':没有这样的文件或目录”。还有其他方法可以用“”引用文件位置,以便可以使用 cp 命令吗?
答案1
将当前目录中文件名中包含空格的所有文件复制到具有相同名称且包含下划线而不是空格的新文件中:
for f in *\ *; do cp -- "$f" "${f// /_}"; done
看Bash常见问题 20如何安全地处理文件名。