Bash 如何找到大于某个大小的文件,并按上次修改日期排序?

Bash 如何找到大于某个大小的文件,并按上次修改日期排序?,bash,find,Bash,Find,我需要写的脚本,写下每个文件在选定的目录,这是大于一些大小。我还需要按大小、名称和上次修改日期对它们进行排序 因此,我提出了前两个案例: 按大小排序 RESULTS=`find $CATALOG -size +$SIZE | sort -n -r | sed 's_.*/__'` RESULTS=`find $CATALOG -size +$SIZE | sed 's_.*/__' | sort -n ` 按名称排序 RESULTS=`find $CATALOG -size +$SIZE |

我需要写的脚本,写下每个文件在选定的目录,这是大于一些大小。我还需要按大小、名称和上次修改日期对它们进行排序

因此,我提出了前两个案例:

按大小排序

RESULTS=`find $CATALOG -size +$SIZE | sort -n -r | sed 's_.*/__'`
RESULTS=`find $CATALOG -size +$SIZE | sed 's_.*/__' | sort -n `
按名称排序

RESULTS=`find $CATALOG -size +$SIZE | sort -n -r | sed 's_.*/__'`
RESULTS=`find $CATALOG -size +$SIZE | sed 's_.*/__' | sort -n `
但我不知道如何按上次修改日期对结果进行排序

任何帮助都将不胜感激。

尝试
xargs
(做任何事情,将STDIN视为参数列表)并将
-t
-r
标记设置为
ls
。 i、 例如:

find $CATALOG -size +$SIZE | xargs ls -ltr
mapfile -t results < <(find "$catalog" -size +$size -type f -exec ls -1rt {} +)
这将为您提供按上次修改日期排序的文件


但是,使用shell实用程序和管道一次按多个属性进行排序将非常困难-我认为您需要使用脚本语言(ruby、perl、php等等),除非您的shell fu很强大。

最好的方法之一,前提是您没有太多的文件,是使用
ls
自行进行排序

按名称排序,每行打印一个文件:

find $CATALOG -size +$SIZE -exec ls -1 {} +
find $CATALOG -size +$SIZE -exec ls -S1 {} +
find $CATALOG -size +$SIZE -exec ls -t1 {} +
按大小排序,每行打印一个文件:

find $CATALOG -size +$SIZE -exec ls -1 {} +
find $CATALOG -size +$SIZE -exec ls -S1 {} +
find $CATALOG -size +$SIZE -exec ls -t1 {} +
按修改时间排序,每行打印一个文件:

find $CATALOG -size +$SIZE -exec ls -1 {} +
find $CATALOG -size +$SIZE -exec ls -S1 {} +
find $CATALOG -size +$SIZE -exec ls -t1 {} +
您还可以使用长列表格式的
ls
开关:按修改时间排序(先小后小),具有人类可读的大小:

find $CATALOG -size +$SIZE -exec ls -hlrt {} +
哦,您可能只想
查找文件(并忽略目录):

最后,请注意:在bash中避免使用大写的变量名(这被认为是不好的做法)并避免使用反勾号,请改用
$(…)
。例如:

results=$(find "$catalog" -size +$size -type f -exec ls -1rt {} +)
此外,您可能不希望像前一行那样将所有结果放在一个字符串中。您可能希望将结果放入一个数组中。在这种情况下,请像这样使用
mapfile

find $CATALOG -size +$SIZE | xargs ls -ltr
mapfile -t results < <(find "$catalog" -size +$size -type f -exec ls -1rt {} +)

mapfile-t results<谢谢,非常有用且详尽的答案。我一直想知道如果使用locate命令而不是find命令怎么会很酷。根据经验,它比find快得多。不幸的是,它没有“-exec”选项(另请参见“超级用户”。我实际上找到了我在这个问题中要问的一个问题的答案(查找特定大小的文件)-谢谢:-)