移动最近修改的文件

移动最近修改的文件

我正在尝试移动“Pictures/”中最近修改的文件。这是我尝试过的:

find Pictures/ -maxdepth 1 -type f -mmin -60 -print0|tail -1| xargs -0 -I {} mv "{}" Dropbox/somefolder/

这不起作用,而且这不是理想的解决方案,因为我猜测该文件在过去一小时内已被修改。

我收到此错误:

mv: cannot stat 'Pictures/file.jpg' : No such file or directory

谢谢!

答案1

如果您使用-print0tail将不起作用,因为您的输出不包含换行符(除非您的文件路径包含换行符,因为某些不太可能的原因)。

假设文件路径中不包含换行符,使用GNUfindsortxargs

find ~/Pictures -type f -printf '%T@ %P\n' | \
sort -k 1nr | sed 's/^[^ ]* //' | head -n 1 |  xargs -I {} mv "{}" ~/Dropbox

如果你有 Zsh,那就很简单了 —— 同样,不允许换行:

mv -- "$(print -l **/*(.om) | head -n 1)" ~/Dropbox

这里,**/*是一个递归表达式,括号内是限定符

  • .– 常规文件
  • o– 对文件进行排序
  • m– 按修改时间

答案2

只要您不需要查找隐藏文件,这样就可以了。

cd /path/to/Pictures
mv "`ls -ltr | grep -v ^d | tail -1 | tr -s ' ' | cut  -d ' ' -f9-`" /path/to/dropbox

相关内容