我需要在目录中搜索特定的.iso
文件。这是最后一个修改过的,我只返回一个结果。我希望将此结果存储在变量中。
我的脚本随后包含:
$MYFILE = find . -type f -name '*.iso' -printf '%p\n' | sort -r | head -n 1
但这会给出一个不是最新的文件(8月22日,而不是10月14日)...
这种方式有什么问题吗?我不太明白为什么我得到的文件既不是最后一个也不是第一个。
答案 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