在目录中查找最新文件并制作副本
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##*/}"
注意:带有-r
的while
选项可防止解释转义序列。
另一答案
你可以添加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
以上是关于在目录中查找最新文件并制作副本的主要内容,如果未能解决你的问题,请参考以下文章