如何列出所有大于 {size} 的文件 *.html(不包括某些 {*parts*})

如何列出所有大于 {size} 的文件 *.html(不包括某些 {*parts*})

我需要一个命令来列出文件。但我有三个问题:

  1. 我想要以.HTMLand结尾的文件.HTM
  2. 如果任何文件的名称中包含以下部分:google docs或,我想将其排除。form
  3. 我只想要大于 1kb 的文件

此时我得到了这个命令:

ls *.html *.htm | grep -v 'backup\|form\|docs\|google'

它运行得很好。它排除以下单词: backup\|form\|docs\|google - 但我想排除小于“1kb”的文件。

我发现显示比 {size} “大”的文件的所有脚本都使用“find”。有人有什么想法吗?

答案1

使用 GNU 查找:

find . -size +1k -type f -iregex '.*\.html?$' \
    -not -iregex '.*\(backup\|form\|docs\|google\).*'

这会查找名称与正则表达式匹配.*\.html?$但不匹配正则表达式的所有超过 1k 的文件.*\(backup\|form\|docs\|google\).*

如果您只需要当前目录中的文件而不是子目录中的文件,请使用该-maxdepth 1选项。

find . -maxdepth 1 -size +1k -type f -iregex '.*\.html?$' \
    -not -iregex '.*\(backup\|form\|docs\|google\).*'

您可以对该文件列表执行任何您需要的操作,例如通过添加选项-exec ...-print0通过管道传输到xargs -0r.

答案2

find . -size +1k | grep '.htm' | grep -v 'backup\|form\|docs\|google'

相关内容