Classificar arquivos em uma pasta em pastas datadas

3

Estou tentando organizar os arquivos de fotos da minha webcam em pastas, caso contrário, recebo milhares de fotos em uma pasta.

Eu tenho um script foscam-move.sh (de Crie subdiretórios e organize arquivos por data ) com o seguinte:

#!/bin/bash

for x in *.jpg; do
  d=$(date -r "$x" +%Y-%m-%d)
  mkdir -p "$d"
  mv -- "$x" "$d/"
done

Eu tenho o script localizado na pasta com todos os arquivos .jpg.

Quando eu o executo no terminal está tudo bem e ele organiza lindamente.

Quando eu adiciono a seguinte tarefa cron, ela não é executada.

* * * * * /home/pi/Desktop/FI9821W_************/snap/foscam-move.sh # JOB_ID_2

Eu tenho que definir a cada minuto porque esta câmera tira muitas fotos.

Como faço para o cron executar meu script a cada minuto?

    
por Michael Lakner 04.08.2017 / 17:35

2 respostas

2

o cron não funciona com o mesmo ambiente que o seu usuário. É provável que tenha problemas porque não está no diretório correto. Tenha seu script cd para o diretório que contém as imagens antes de executar o loop for .

    
por 04.08.2017 / 17:39
2

As tarefas Cron são iniciadas com o diretório de trabalho atual sendo o diretório inicial do usuário.

Quando você executa um script, ele não altera automaticamente o diretório de trabalho para o pai do script. Para isso, você precisa fazer o cd no script:

#! /bin/sh -
cd -P -- "$(dirname -- "$0")" || exit
# rest of your script that has nothing bash-specific in it
# by the way.

Ou, como esse script não é específico da pasta em que você deseja executá-lo, armazene-o em um local genérico (como ~/bin ) e passe o caminho do diretório como argumento:

#! /bin/sh -
cd -P -- "${1?no directory provided}" || exit
# ...
    
por 04.08.2017 / 17:42