如何查找前500个最旧的文件?
我尝试过的:
find /storage -name "*.mp4" -o -name "*.flv" -type f | sort | head -n500
使用GNU查找和GNU排序查找500个最旧的文件:
#!/bin/bash
typeset -a files
export LC_{TIME,NUMERIC}=C
n=0
while ((n++ < 500)) && IFS=' ' read -rd '' _ x; do
files+=("$x")
done < <(find /storage -type f ( -name '*.mp4' -o -name '*.flv' ) -printf '%T@ %p ' | sort -zn)
printf '%qn' "${files[@]}"
更新-一些解释:
正如Jonathan在评论中提到的,处理这一问题的正确方法包括许多非标准功能,这些功能允许生成和使用空分隔列表,以便可以安全地处理任意文件名。
GNUfind的-printf
产生mtime(使用未记录的%T@
格式。我的猜测是,这是否有效取决于你的C库),然后是一个空格,然后是带有终止