我想根据文件大小过滤命令的输出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'