尋找一天中某個時間修改的文件?

尋找一天中某個時間修改的文件?

我只需要查找在辦公時間編輯的所有文件,因為電腦可以在晚上用於自由職業。有沒有辦法無論日期如何搜尋一天中的建立/修改時間?我有 Windows 和 Linux 系統。

答案1

是的,您可以使用名為的免費軟體搜尋任何程式/檔案的修改日期搜尋一切。但是,您需要單擊程式中的“日期/時間”列並自行手動查看。遺憾的是,沒有程序可以為您執行此操作。希望這可以幫助。 - 阿芙羅狄蒂

答案2

Linux 解決方案。

類似的問題。基於我的回答在那裡我想出了一個通用的 Bash 腳本來解決此類問題。您將找到下面的程式碼。將其儲存到名為findt(或另一個)的檔案中,然後chmod a+x findt.把它放在你$PATH指向的地方或其他地方——我假設你知道基礎知識、區別等。

調用findt -h以學習語法。摘抄:

用法

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

概要

呼叫指令列出在和(含)find之間修改、變更或存取的物件(檔案、目錄等)。和是以 24 小時製或格式 ( - ) 給出的時間。修改日期(天)並不重要。如果晚於則間隔包括午夜。FROMTOFROMTOHH:MMH:MM00:0023:59FROMTO

選項

  `-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`)

如果指定了多個?time,則只有最後一個重要。

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

-d除非也使用-por ,否則保持沉默。-0

ARG

下面的參數將作為其初始參數TO傳遞。在此find指定路徑和附加測試(例如-type f)。

大部分程式碼用於解析命令列、列印幫助等find。這是稍微通用的解決方案我已經提到的答案。那裡已經解釋過了,所以我在這裡不再重複。

該工具僅列印名稱,除非您使用-d.請注意,它使用HH:MM普通格式stat -c %y等,忽略時區資訊;如果涉及不同的時區,那麼您可能需要調整解決方案。

在你的情況下,你應該運行類似的東西:

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

這是代碼:

#!/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 "$@"

答案3

您可以在Linux環境下嘗試該指令。

尋找所有被修改的文件只有今天

find . -mtime -1 -print

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

  

相關內容