代码之家  ›  专栏  ›  技术社区  ›  rkj

如何自动删除Mercurial工作树中的所有.orig文件?

  •  54
  • rkj  · 技术社区  · 15 年前

    我在Mac电脑上工作,因此我可以使用类似以下内容:

    find . -iname '*.orig' -exec rm '{}' ';'
    

    还有别名,但我更喜欢用hg清理之类的东西。。。

    更新:

    一段时间以来,, Purge extension

    11 回复  |  直到 6 年前
        1
  •  69
  •   dave_k_smith    8 年前

    就我个人而言,我使用

    $ rm **/*.orig
    

    如果我厌倦了 .orig shopt -s globstar .

    但是如果您使用另一个shell或者想要一个内置的解决方案,那么您可能会喜欢 purge extension

    $ hg purge
    

    您可以使用删除所有未跟踪和忽略的文件

    $ hg purge --all
    

    使用的优点 hg purge rm 命令行只会留下空目录。

        2
  •  34
  •   vectoroc    12 年前

    find -delete

    find <path-to-files> -name '*.orig' -delete

        3
  •  15
  •   mlissner    12 年前

    如果您只是想删除.orig文件,而您恰好在Windows计算机上,那么以下操作似乎很有效:

    D:\workspace>hg purge -I **/*.orig --all
    

    这将删除所有以.orig结尾的未跟踪文件,但不会删除 未跟踪的文件,就像其他答案一样。

    您可以在运行它之前通过将 --print 也加入。

        4
  •  4
  •   mccrappy    12 年前

    以下操作将删除整个工作副本层次结构中的.orig文件,并适用于包含空格的路径:

    find . -name *.orig | while read -d $'\n' file; do rm -v "$file"; done;
    

    我在.bash_配置文件中使用别名:

    alias clearorig='echo "Removing .orig files..."; find . -name *.orig | \
    while read -d $'\''\n'\'' file; do rm -v "$file"; done;'
    
        5
  •  1
  •   dfa    15 年前

    update hook

    更新:这是在更新或更新后运行的 已完成对工作目录的访问

        6
  •  1
  •   Community T.Woody    7 年前

    我已经发布了这个答案 before . 但这是正确的答案。

    这批文件是我自己做的。

    IF "%1%" == "d" (
        del /s *.orig
        del /s *.rej
     ) ELSE ( 
        del /s /p *.rej
        del /s /p *.orig
     )
    

    帮助: 将此内容另存为 原蝙蝠

    1. orig d 在未经确认的情况下,立即删除所有拒绝和原始文件
    2. orig 通过确认删除文件[安全机制]

        7
  •  1
  •   Gary    11 年前

    我个人使用回购协议根目录中的以下内容:

    hg purge -p -I **/*.orig | xargs rm -f
    

    这比只使用“hg purge”或“hg purge--all”要好一点,因为您可以过滤掉要包含的特定文件类型。

    关于解释:

    • p参数打印要清除的文件列表
    • 生成的列表通过管道传输到xargs,并使用rm-f命令执行
        8
  •  1
  •   sonjz    9 年前

    我在Powershell工作,在这里没有看到答案:

    # NOTE: be in the root of your repository
    # fetch all .orig files recursively
    $orig = (dir *.orig -recurse) ;
    
    # remove each .orig file
    foreach ($item in $orig) { del $($item.FullName) ; }
    
    # afterwards I make sure to remove the references to the .orig files in the repo
    # then commit & push
    hg addremove ; 
    hg commit -m "remove .orig" ;
    hg push ;
    
        9
  •  1
  •   hamapa    4 年前

    PowerShell单衬套(递归):

    Get-ChildItem <path> -Recurse -File -Include *.orig | Remove-Item
    

    Get-ChildItem . -Recurse -File -Include *.orig | Remove-Item
    
        10
  •  0
  •   Clint Pachl    10 年前

    这不是一种自动删除额外文件的方法,但它非常简单,可以手动运行。

    这个 hg st 可以显示 未知的 未跟踪 文件夹。您可以将此输出用作系统的参数 rm 命令下面是我刚刚执行的一个实际示例:

    $ # SHOW ONLY THE CRUFT
    $ hg status --unknown
    ? config/settings.rb.orig
    ? lib/helpers.rb.orig
    ? routes/main.rb.orig
    
    $ # THE CRUFT WITHOUT THE "?" PREFIX
    $ hg status --unknown --no-status
    config/settings.rb.orig
    lib/helpers.rb.orig
    routes/main.rb.orig
    
    $ # SAFELY REMOVE ALL CRUFT
    $ rm -- `hg st -un`
    

    -r -d 旗帜 也许会有帮助。

    奖金 hg status --ignored 可用于从编辑器(例如Vim)中清除所有被忽略的临时文件以及交换文件。

        11
  •  0
  •   toddles_fp    9 年前

    这些需要从Mercurial项目的根目录运行

    hg status | grep ".orig" | cut -d ' ' -f 2- | xargs rm -f

    或者,如果要清除所有未知文件。

    hg status | cut -d ' ' -f 2- | xargs rm -f

        12
  •  -1
  •   Collin Klopfenstein    11 年前

    我不喜欢选择的答案。它不会删除项目所有级别中的所有内容。我用这个:

    for f in `find . | grep .orig$`; do rm "$f"; done
    

    适用于Mac和*nix

    推荐文章