根据文件大小过滤 ls 输出

smo*_*uns 7 bash command-line ls

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

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

这是我目前正在使用的:

ls -lah | grep '.png\|.jpg'
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么能做到这一点?

slh*_*hck 7

你可以使用find

find . -type f -size +100k | grep '.png\|.jpg'
Run Code Online (Sandbox Code Playgroud)

where+100k以 KB 为单位指定大小,这意味着只应输出大于此值的文件。find还有一些其他不错的选项,例如只列出一定时间前创建的文件。有关man find更多详细信息,请参阅。

上面也可以改写为

find . -type f -size +100k -name "*.png" -o -name "*.jpg"
Run Code Online (Sandbox Code Playgroud)


gar*_*ohn 5

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

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

请注意,大小以块为单位,其中一个块通常是 512 字节。