【问题标题】:Remove all files of a certain type except for one type in linux terminal删除某种类型的所有文件,除了linux终端中的一种类型
【发布时间】:2012-09-06 19:24:52
【问题描述】:

在我运行 Ubuntu 的计算机上,我有一个文件夹,里面有数百个文件,所有文件都命名为“index.html.n”,其中 n 从 1 开始并继续向上。其中一些文件是实际的 html 文件,一些是图像文件(png 和 jpg),还有一些是 zip 文件。

我的目标是永久删除除 zip 存档之外的每个文件。我认为它是rmfile 的某种组合,但我不确定确切的语法。

【问题讨论】:

标签: linux ubuntu terminal


【解决方案1】:

如果它适合您的参数列表并且没有文件名包含冒号,则带有 xargs 的简单管道应该这样做:

file * | grep -vi zip | cut -d: -f1 | tr '\n' '\0' | xargs -0 rm

【讨论】:

  • 你能解释一下上面的命令吗?
【解决方案2】:

首先find 查找匹配文件,然后file 获取文件类型。 sed 消除了其他文件类型,并从file 的输出中删除了除文件名之外的所有内容。最后,rm 删除:

find -name 'index.html.[0-9]*' | \                
    xargs file | \                                
      sed -n 's/\([^:]*\): Zip archive.*/\1/p' |  
        xargs rm

【讨论】:

    【解决方案3】:

    我会跑:

    for f in in index.html.*
    do
      file "$f" | grep -qi zip
      [ $? -ne 0 ] && rm -i "$f"
    done
    

    如果您有足够的信心,请删除 -i 选项

    【讨论】:

      【解决方案4】:

      这是我要使用的方法;它不是完全自动化的,但比其他一些方法更不容易出错。

      file * > cleanup.sh
      

       file index.html.* > cleanup.sh
      

      这会生成当前目录中所有文件(不包括点文件)或所有index.html.* 文件的列表,并将列表写入cleanup.sh

      使用你最喜欢的文本编辑器(我的恰好是 vim),编辑cleanup.sh

      • 在第一行添加#!/bin/sh
      • 删除所有包含字符串“Zip archive”的行
      • 在每一行中,删除从 : 到行尾的所有内容(在 vim 中,:%s/:.*$//
      • 将每行的开头替换为“rm”,后跟一个空格

      退出编辑器,更新文件。

      chmod +x cleanup.sh
      

      您现在应该有一个 shell 脚本,它将删除除 zip 文件之外的所有内容。

      在运行之前仔细检查脚本。注意拼写错误,以及名称中包含 shell 元字符的文件。您可能需要在文件名中添加引号。

      (请注意,如果您将其作为单行 shell 命令执行,则在实际删除它们之前,您没有机会检查要删除的文件列表。)

      一旦您对脚本正确感到满意,请运行

      ./cleanup.sh
      

      从您的 shell 提示符中。

      【讨论】:

        【解决方案5】:
        for i in index.html.*
        do
            $type = file $i;
            if [[ ! $file =~ "Zip" ]]
            then
                rm $file
            fi
        done
        

        rm 更改为ls 以进行测试。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-28
          • 1970-01-01
          相关资源
          最近更新 更多