查找上次修改的文件并将结果输入变量

时间:2014-10-14 09:46:38

标签: linux bash

我需要在目录中搜索特定的.iso文件。这是最后一个修改过的,我只返回一个结果。我希望将此结果存储在变量中。

我的脚本随后包含:

$MYFILE = find . -type f -name '*.iso' -printf '%p\n' | sort -r | head -n 1

但这会给出一个不是最新的文件(8月22日,而不是10月14日)...

这种方式有什么问题吗?我不太明白为什么我得到的文件既不是最后一个也不是第一个。

2 个答案:

答案 0 :(得分:1)

"查找与#34;不排序文件和"排序-r"只会按字母顺序排列。

如果使用find打印修改时间,您将能够对修改时间进行排序并提取文件名(即使文件位于不同的子目录中):

MYFILE=$(find -name "*.iso" -type f -printf "%Ts %p\n" | sort -n | tail -1 | sed -r -e 's/^[0-9]+ //')

答案 1 :(得分:0)

我猜您的sort -r会对文件名进行按字母顺序排序,而不是基于修改时间。

试试这个:

find . -name "*.iso" -type f | xargs ls -tr | tail -1