【问题标题】:Move all files whose names contain a capital letter from source directory to target directory? [closed]将名称包含大写字母的所有文件从源目录移动到目标目录? [关闭]
【发布时间】:2015-12-01 18:13:22
【问题描述】:

这个linux命令怎么写? 将所有名称中包含大写字母的文件从源目录移动到目标目录?

【问题讨论】:

    标签: linux command wildcard mv


    【解决方案1】:

    如果我正确阅读了您的问题,请使用:

    mv src/*[A-Z]* target/
    

    【讨论】:

    • 它不能正常工作。您的 * 也匹配小写字母。所以只有小写字母的文件也被选中了。
    • 您输入的命令是否一字不差,第一个* 前后没有空格,第二个* 之前没有空格?
    【解决方案2】:

    明显但错误的解决方案是

    mv src/*[A-Z]* dest
    

    但是,字母顺序取决于区域设置。 [A-Z] 因此可以包含小写字母:

    $> touch abc aBc
    $> export LC_ALL=C
    $> ls *[A-Z]*
    abc
    $> LC_ALL=en_US
    $> ls *[A-Z]*
    aBc abc
    

    所以一定要正确设置LC_ALL

    export LC_ALL=C
    mv src/*[A-Z]* dest
    

    顺便说一句:*[A-Z]* 由 shell 评估,而不是 mv。因此,以下不起作用

    LC_ALL=C mv rc/*[A-Z]* dest   ## does not work
    

    【讨论】:

      【解决方案3】:

      此版本确保仅将根源文件夹中的“文件”移动到目标目录:

      find /source/*[A-Z]* -maxdepth 1 -type f -exec mv {} /target \;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多