将文件大小和其他信息添加到查找中

时间:2015-03-09 20:09:04

标签: linux

我目前正在使用以下linux命令:

find /folder -size +1000k | grep txt

在"文件夹中找到"任何带有" txt"的文件在它的大小超过1000k字节。

这成功返回了我想要的文件列表。但我还想打印出文件大小,如果可以的话,看看在返回的文件列表中修改的最后日期(很像命令ll返回的内容)

我尝试使用printf %s,但这只是返回一个数字列表,因此grep不起作用。

1 个答案:

答案 0 :(得分:1)

首先 - 绝对没有理由对grep的输出使用find;你可以告诉find自己进行过滤。

第二 - -printf动作采用一个格式字符串,该字符串可以有多个说明符。例如,%s %P\n,打印第一个尺寸,然后是名称,然后是换行符。 (这种排序是可取的,因为大小总是一个数字的字符串,而名称可能是未定义的 - 所以首先放置名称会使解析更难。)

find /folder -size +1000k -name '*txt*' -printf '%s %P\n'

请注意 - 要完全无误地解析,您将需要使用NUL说明符而不是换行符,因为换行符在文件名中有效。


按大小排序后,将文件名和大小读入一对bash数组的示例:

files=( )
sizes=( )
while IFS= read -r -d' ' size && IFS= read -r -d '' filename; do
  files+=( "$filename" )
  sizes+=( "$size" )
done < <(find /folder -size +1000k -name '*txt*' -printf '%s %P\0' | sort -n -z)