我需要一个命令来列出文件。但我有三个问题:
- 我想要以
.HTML
and结尾的文件.HTM
- 如果任何文件的名称中包含以下部分:
google
docs
或,我想将其排除。form
- 我只想要大于 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'