shell:如何以递归方式复制包含specialchar的文件名

shell:如何以递归方式复制包含specialchar的文件名,shell,copy,special-characters,filenames,cp,Shell,Copy,Special Characters,Filenames,Cp,我正在使用ubuntu 20.04上的一个简单脚本备份外部磁盘上的重要文件夹: #!/usr/bin/env bash cp -r /PROFILE PROFILE cp -r /media/DATA DATA 它可以正常工作,但某些文件名包含特殊字符:#|?而且 :在每次截屏(datetime)和保存电子邮件答复时发生(“Re:”) “#”出现在每个录制的声音中(“标题#12”) ",|和??主要出现在保存的html或电子邮件中 还有“*”(星号)和“'logo/rubon1.”:无效参

我正在使用ubuntu 20.04上的一个简单脚本备份外部磁盘上的重要文件夹:

#!/usr/bin/env bash
cp -r  /PROFILE PROFILE
cp -r /media/DATA DATA
它可以正常工作,但某些文件名包含特殊字符:#|?而且

  • :在每次截屏(datetime)和保存电子邮件答复时发生(“Re:”)
  • “#”出现在每个录制的声音中(“标题#12”)
  • ",|和??主要出现在保存的html或电子邮件中

  • 还有“*”(星号)和“'logo/rubon1.”:无效参数(22)

    我找到了一种方法,可以将名称中带有specialchar的cp文件复制到EXT4分区

    因此,我减少了NTFS外部HD分区(这样做需要一整夜),在空闲空间中创建了一个EXT4分区(标记为“EXT4ELEM”),并用它来备份我的文件:不再有错误

    «cp#:'ENE”/media/jluc/EXT4ELEM»正常


    (此处的灵感来源:)

    是您的朋友。shellcheck建议将shebang包含在代码示例中,因此我就这样做了。仅此而已(“未检测到任何问题”)@JLuc:我不知道您的脚本在哪些方面与这些文件名存在问题。您实际注意到这些文件有什么影响?@user1934428错误消息是“cp:无法创建标准文件”。/DATA/Re:blahblah.eml:无效参数”(翻译自法语错误消息«cp:impossable de créer le fichier standard'。/DATA/Re:blahblah.eml:argument invalide»)该命令对其他文件有效吗(即没有“冒犯”字符的字符)?如果用
    rsync
    替换
    cp
    ,会发生什么情况?
    cp--version
    说了什么?