【问题标题】:Moving All Files From Directories One Step Up将目录中的所有文件上移一步
【发布时间】:2010-10-12 07:59:15
【问题描述】:

我有一个看起来像这样的目录

fool@brat:/mydir/ucsc_mm8> tar -xvf *.tar 
1/chr1.fa.masked
1/chr1_random.fa.masked
2/chr2.fa.masked
3/chr3.fa.masked
4/chr4.fa.masked
5/chr5.fa.masked
5/chr5_random.fa.masked
19/chr19.fa.masked
Un/chrUn_random.fa.masked

我想要做的是将子目录/1 中的所有“*.masked”文件移出到/Un。 在 Linux/Unix 中是否有一种紧凑的方法?

【问题讨论】:

    标签: linux bash shell unix mv


    【解决方案1】:

    移动所有匹配特定表达式的文件的典型方法是

    mv 1/*.masked targetDir
    

    targetDir 可能是..

    如果您想将其从目录 1、2、3 中移出,则可以执行类似的操作

    mv */*.masked targetDir
    

    或者,如果你想专门从编号目录中移动它,你可以运行类似

    mv [0-9][0-9]/*.masked targetDir
    

    【讨论】:

    • .. 的目标目录将文件移动到当前工作目录的上一级。不是OP想要的。他们希望将其相对于实际的源文件上移一步。
    【解决方案2】:
    mv */*.masked .
    

    【讨论】:

      【解决方案3】:

      许多 unix shell 在路径的目录部分也支持 * 运算符。以下至少在 bash 和 zsh 中有效:

      ls */*.masked
      

      这将返回所有以 .masked 更深的目录结尾的文件。

      所以要移动它们:

      mv */*.masked destination
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        • 2013-07-02
        • 2017-05-27
        相关资源
        最近更新 更多