Mover o arquivo modificado mais recentemente

0

Estou tentando mover o arquivo modificado mais recentemente em "Imagens /". Isso é o que eu tentei:

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

Isso não funciona e não é a solução ideal, pois acredito que o arquivo tenha sido modificado na última hora.

Eu recebo este erro:

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

Obrigado!

    
por Federico 14.10.2014 / 20:16

2 respostas

0

Se você usar -print0 , tail não funcionará porque sua saída não contém novas linhas (a menos que seus caminhos de arquivo, por algum motivo improvável).

Supondo que os arquivos não contenham uma nova linha no caminho, use o GNU find , sort e xargs :

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

Se você tem o Zsh, é bem simples - mais uma vez, sem novas linhas permitidas:

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

Aqui, **/* é uma glob recursiva e, entre parênteses, qualificadores :

  • . - um arquivo regular
  • o - arquivos de classificação
  • m - por hora de modificação
por 14.10.2014 / 20:44
0

Isso deve acontecer, contanto que você nunca precise encontrar arquivos ocultos.

cd /path/to/Pictures
mv "'ls -ltr | grep -v ^d | tail -1 | tr -s ' ' | cut  -d ' ' -f9-'" /path/to/dropbox
    
por 14.10.2014 / 20:29

Tags