Encontre arquivos modificados durante a hora do dia?

1

Eu preciso encontrar todos os arquivos que foram editados durante o horário de expediente apenas porque o computador pode ser usado como freelancer à noite. Existe uma maneira de pesquisar a hora do dia criada / modificada, independentemente da data? Eu tenho sistemas Windows e Linux disponíveis.

    
por Alan 29.09.2017 / 00:27

3 respostas

1

Sim, você pode procurar datas modificadas para qualquer programa / arquivo usando um software gratuito chamado Pesquisar tudo . No entanto, você precisará clicar na coluna Data / Hora no programa e procurar manualmente por ele mesmo. Não há programa para fazer isso para você, infelizmente. Espero que isto ajude. - Afrodite

    
por 29.09.2017 / 01:32
0

Solução Linux.

Existe uma pergunta semelhante . Baseado em minha resposta lá eu criei um script Bash genérico para resolver esse tipo de problema. Você encontrará o código abaixo. Salve-o em um arquivo chamado findt (ou outro) e, em seguida, chmod a+x findt . Coloque-o onde seu $PATH aponta para ou em outro lugar - suponho que você saiba o básico, a diferença, etc.

Invoque findt -h para aprender a sintaxe. Trecho:

USAGE

  'findt [OPTION]... FROM TO [ARG]...'

SYNOPSIS

Invokes find command to list objects (files, directories, ...) modified, changed or accessed between FROM and TO (inclusive). FROM and TO are times given in 24-hour HH:MM or H:MM format (00:00 - 23:59). Modification date (day) does not matter. If FROM is later than TO then the interval includes midnight.

OPTIONs

  '-h'    print this help and exit

  '-m'    use mtime (default)  
  '-c'    use ctime  
  '-a'    use atime (note: understand 'noatime' mount option etc.)  
  '-b'    use birth time, 'stat -c %w'  
          (useless, see 'https://unix.stackexchange.com/a/91200')

If more than one ?time is specified, only the last one matters.

  '-p'    use '-print' with 'find' (default)  
  '-0'    use '-print0' instead  
  '-d'    use '-delete' with 'find' (non-POSIX)  

-d is silent unless -p or -0 is also used.

ARGs

Arguments following TO are passed to find as its initial arguments. Specify paths and additional tests (e.g. -type f) here.

A maior parte do código é para analisar a linha de comando, imprimir a ajuda, etc. A parte funcional do script é find invocation. É uma solução ligeiramente generalizada da minha resposta já mencionada . É explicado lá, então não vou me repetir aqui.

A ferramenta apenas imprime nomes, a menos que você use -d . Observe que ele usa HH:MM do% normal stat -c %y etc. ignorando informações de fuso horário; se houver diferentes fusos horários envolvidos, talvez você queira ajustar a solução.

No seu caso, você deve executar algo como:

findt 8:00 15:59 /path/to/dir -type f

Este é o código:

#!/usr/bin/env bash

set -e

myname="${0##*/}"
from=-1
to=-1
property=%y
is_print=0
is_zero=0
is_delete=0
post_args=""
conj=-a

main() {
while [ "${1:0:1}" = "-" ]; do
  options="${1:1}"
  shift
  while [ ${#options} -ne 0 ]; do
    case "$options" in
      h*)
        print_help
        exit 0;;
      m*)
        property=%y;;
      c*)
        property=%z;;
      a*)
        property=%x;;
      b*)
        property=%w;;
      p*)
        is_print=1;;
      0*)
        is_zero=1;;
      d*)
        is_delete=1;;
      *)
        print_error;;
    esac
  options="${options:1}"
  done
done

from='parse_time "$1"'
to='parse_time "$2"'
shift 2

[ $from -gt $to ]    && conj=-o
[ $is_delete -eq 0 ] && is_print=1
[ $is_print -eq 1 ]  && post_args="-print"
[ $is_zero -eq 1 ]   && post_args="-print0"
[ $is_delete -eq 1 ] && post_args="$post_args -delete"

find "$@" -exec bash -c '\
hm='stat -c $4 "$0" | cut -c 12-16'; [ "${#hm}" -eq 0 ] && exit 1 ; \
t=$((60*10#'echo $hm | cut -c 1-2'+10#'echo $hm | cut -c 4-5')); \
test \( $t -ge $1 \) $3 \( $t -le $2 \)' \
{} $from $to $conj $property \; $post_args
}

parse_time() {
time_string="$1"
[ ${#time_string} -eq 4 ] && time_string="0$time_string"
[[ "$time_string" =~ ^[0-2][0-9]:[0-5][0-9]$ ]] || print_error
{ value=$((60*10#${time_string:0:2}+10#${time_string:3:2})); } 2>/dev/null || print_error
[ $value -ge 1440 ] && print_error
printf '%s' $value
}

print_error() {
cat >&2 << EOF
${myname}: error parsing command line
Try '$myname -h' for more information.
EOF
exit 1
}

print_help() {
cat << EOF
USAGE

    $myname [OPTION]... FROM TO [ARG]...

SYNOPSIS

Invokes \'find' command to list objects (files, directories, ...) modified,
changed or accessed between FROM and TO (inclusive). FROM and TO are times given
in 24-hour HH:MM or H:MM format (00:00 - 23:59). Modification date (day)
does not matter. If FROM is later than TO then the interval includes midnight.

OPTIONs

    -h  print this help and exit

    -m  use mtime (default)
    -c  use ctime
    -a  use atime (note: understand \'noatime' mount option etc.)
    -b  use birth time, \'stat -c %w'
        (useless, see https://unix.stackexchange.com/a/91200)

If more than one ?time is specified, only the last one matters.

    -p  use \'-print' with \'find' (default)
    -0  use \'-print0' instead
    -d  use \'-delete' with \'find' (non-POSIX)

-d is silent unless -p or -0 is also used.

ARGs

Arguments following TO are passed to \'find' as its initial arguments.
Specify paths and additional tests (e.g. \'-type f') here.

EXAMPLES

To list objects in /tmp modified during working hours:
    $myname 7:00 14:59 /tmp

To list and delete big files accessed late at night in /home/foo
    $myname -apd 23:30 4:30 /home/foo -typef -size +640M

LICENCE
        Creative Commons CC0.
EOF
}

main "$@"
    
por 07.10.2017 / 22:33
0

Você pode tentar o comando no ambiente Linux.

Para localizar todos os arquivos modificados hoje apenas

find . -mtime -1 -print

touch -t 'date +%m%d0000' /tmp/$$
find /tmefndr/oravl01 -type f -newer /tmp/$$
rm /tmp/$$

    
por 29.09.2017 / 13:05

Tags