我目前正在使用以下linux命令:
find /folder -size +1000k | grep txt
在"文件夹中找到"任何带有" txt"的文件在它的大小超过1000k字节。
这成功返回了我想要的文件列表。但我还想打印出文件大小,如果可以的话,看看在返回的文件列表中修改的最后日期(很像命令ll返回的内容)
我尝试使用printf %s
,但这只是返回一个数字列表,因此grep不起作用。
答案 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)