在目录中查找最新文件并进行复制

时间:2019-04-25 15:27:49

标签: bash

我的目标是在目录中找到最新图像,并使用新名称复制它。

我尝试使用find命令,但是复制似乎不起作用

这就是将为我返回最近拍摄的照片的原因

if (hostingServer == "kestrel")
{
    DoSomething();
}
else
{
    DoSomethingElse();
}

然后我已经尝试过将其复制并称为lastimage.jpg

lastimage=$(find *.jpg -type f | xargs ls -ltr | tail -n 1)
echo $lastimage

我希望在我叫它的同一目录中看到lastimage=`find *.jpg -type f | xargs ls -ltr | tail -n 1` && cp $lastimage /path/to/location/lastimage.jpg 。 我的实际结果是

lastimage.jpg

2 个答案:

答案 0 :(得分:0)

如果您有GNU coreutils,则可以在process substitution的帮助下实施以下解决方案:

while read -rd '' fname
do
 atime=$(stat -c %X "$fname")
 [ "${max:-0}" -le "$atime" ] && max="$atime" && la="$fname"
done < <(find . -type f -print0)
cp "${la}" "/path/to/destination/${la##*/}"

注意:带有-r的{​​{1}}选项可防止解释转义序列。

答案 1 :(得分:0)

您可以将awk '{print $NF}'添加到您的命令中,它将起作用。问题是ls -ltr返回文件信息以及文件名,而您只需要文件名。 awk命令将ls的输出仅剪切到最后一列(文件名)。

 lastimage=`find *.jpg -type f | xargs ls -ltr | awk '{print $NF}' | tail -n 1` && cp $lastimage /path/to/location/lastimage.jpg