根据文件大小过滤 ls 输出

根据文件大小过滤 ls 输出

我想根据文件大小过滤命令的输出ls。任何大于 100KB 的 .jpg 或 .png 文件都应在输出中报告。

我已经能够过滤 .png / .jpg 文件,但我无法丢弃任何小于 100KB 的文件。

以下是我目前正在使用的:

ls -lah | grep '.png\|.jpg'

有什么想法我可以这样做吗?

答案1

正如其他人所建议的,find将允许您查找指定大小范围内的文件。Find但仅输出每个文件的路径。此外,无需进一步限定,find将查找当前目录和当前目录下的每个目录中的所有文件。以下仅搜索当前目录并使用ls显示结果。

find . -maxdepth 1 -size +200 \( -name \*.png -o -name \*.jpg \) -print | xargs ls -ldh

请注意,大小以块为单位,一个块通常(如果不是总是)为 512 字节。

答案2

您可以使用以下方法实现此目的find

find . -type f -size +100k | grep '.png\|.jpg'

其中+100k指定了文件大小(单位为 KB),这意味着只有大于此大小的文件才会被输出。它还find具有其他一些不错的选项,例如,仅列出在一定时间之前创建的文件。请参阅man find以了解更多详细信息。

上述内容也可以改写为

find . -type f -size +100k -name "*.png" -o -name "*.jpg"

答案3

使用find而不是ls

find . -type f -size +100k \( -name \*.png -or -name \*.jpg \)

答案4

使用 du

du -a --apparent-size -t +100k | grep '.png\|.jpg'

相关内容