夜間にコンピューターをフリーランスで使用する可能性があるため、勤務時間中にのみ編集されたすべてのファイルを見つける必要があります。日付に関係なく、作成/変更された時刻を検索する方法はありますか? Windows と Linux の両方のシステムを利用できます。
答え1
はい、無料のソフトウェアを使用して、任意のプログラム/ファイルの変更日を検索できます。すべてを検索ただし、プログラム内の日付/時刻列をクリックして、手動で確認する必要があります。残念ながら、これを実行できるプログラムはありません。お役に立てれば幸いです。 - アフロディーテ
答え2
Linux ソリューション。
がある同様の質問。 に基づく私の答えはこの種の問題を解決するための一般的な Bash スクリプトを思いつきました。以下にコードを示します。これをfindt
(または別の)という名前のファイルに保存しますchmod a+x findt
。これを、 が指す場所または他の場所に配置します。$PATH
基本や違いなどについてはご存じだと思います。
findt -h
構文を学習するには、Invoke を呼び出します。抜粋:
使用法
`findt [OPTION]... FROM TO [ARG]...`
概要
から まで(両端を含む)
find
の間に変更、変更、またはアクセスされたオブジェクト (ファイル、ディレクトリなど) を一覧表示するコマンドを呼び出します。FROM
およびは、24 時間形式 ( - ) で指定された時間です。変更日(日) は関係ありません。が より後の場合、間隔には真夜中が含まれます。TO
FROM
TO
HH:MM
H:MM
00:00
23:59
FROM
TO
オプション
`-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
指定されている場合は、最後の 1 つだけが有効になります。`-p` use `-print` with `find` (default) `-0` use `-print0` instead `-d` use `-delete` with `find` (non-POSIX)
-d
-p
またはも使用されない限り、 は黙字になります-0
。ARG
以下の引数はの初期引数として
TO
渡されますfind
。ここでパスと追加のテスト (例-type f
) を指定します。
コードのほとんどはコマンドラインの解析やヘルプの表示などです。スクリプトの作業部分はfind
呼び出しです。これは、すでに述べた私の答えそこに説明されているので、ここでは繰り返しません。
ツールは、 を使用しない限り、名前のみを出力します-d
。タイムゾーン情報を無視してHH:MM
from plainstat -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/$$