在目录中查找最新文件并制作副本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在目录中查找最新文件并制作副本相关的知识,希望对你有一定的参考价值。

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

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

以下是最新拍摄的照片

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

然后我试着把它复制一下并称之为lastimage.jpg

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

我希望在同一个目录中看到lastimage.jpg。我的实际结果是

cp: invalid option -- 'w'
答案

如果您有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##*/}"

注意:带有-rwhile选项可防止解释转义序列。

另一答案

你可以添加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

以上是关于在目录中查找最新文件并制作副本的主要内容,如果未能解决你的问题,请参考以下文章

关于SVN先还原在更新是啥意思?新手,请指导。

在快照视图中查找文件的本地副本

如何使用 .NET 在目录中查找最新文件且不循环?

Python - 制作文件的副本

在目录中查找最新文件

bash:使用新后缀复制每个文件