【问题标题】:LINUX CP: I need to copy all files from one directory to another without copying any sub-directoriesLINUX CP:我需要将所有文件从一个目录复制到另一个目录而不复制任何子目录
【发布时间】:2021-06-16 02:06:23
【问题描述】:

我需要将文件从一个目录复制到另一个目录而不复制任何子目录。子目录的数量和名称是动态的,所以我不能“--exclude”特定目录或使用“-r”选项。如何排除所有子目录?

代码1:

cp '/media/lm1/My Passport/OneDrive/Music/Yes/*.*' '/home/lm1/Music/Archive'

结果1:

p: cannot stat '/media/lm1/My Passport/OneDrive/Music/Yes/*.*': No such file or directory

代码2:

cp '/media/lm1/My Passport/OneDrive/Music/Yes/*' '/home/lm1/Music/Archive'

结果2:

p: cannot stat '/media/lm1/My Passport/OneDrive/Music/Yes/*': No such file or directory

CODE3:

cp '/media/lm1/My Passport/OneDrive/Music/Yes' '/home/lm1/Music/Archive'

结果3:

cp: -r not specified; omitting directory '/media/lm1/My Passport/OneDrive/Music/Yes'

【问题讨论】:

    标签: linux shell ubuntu directory cp


    【解决方案1】:

    改用cp /media/lm1/My\ Passport/OneDrive/Music/Yes/* /home/lm1/Music/Archive

    使用引号会停止 shell 扩展,因此转义空格字符。

    【讨论】:

    • 这可行,但会为星号扩展至的任何目录发出错误消息。
    【解决方案2】:

    Glob 模式(通配符 *.*)在引号内不起作用,但您可以将 glob 移到引号外,如下所示:

    cp '/media/lm1/My Passport/OneDrive/Music/Yes/'*.* '/home/lm1/Music/Archive'
    

    【讨论】:

    • 插值确实是和双引号有关的东西,但不是你介绍的。如果将双引号替换为撇号/单引号,您所呈现的内容同样适用。
    • 非常正确 - 我会编辑以更正措辞
    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 2017-11-18
    • 1970-01-01
    • 2013-06-01
    • 2020-06-22
    • 2014-08-12
    • 2013-10-24
    相关资源
    最近更新 更多