1時間前に生成されたファイルを見つける方法は?

1時間前に生成されたファイルを見つける方法は?

1日のうちの1時間ごとにファイルが表示されるフォルダがあります。その後、作成日が1時間前のファイルだけを別のフォルダにコピーしたいと思います。たとえば、現在の日時が午前9時20分で、作成日が午前8時から午前8時59分59秒までのファイルをコピーしたいとします。私はシェルLinuxに慣れていません。

#!/bin/bash
logfile="/usertest/log/"`date +"%Y%m%d"`.log
(
srcRoot=/usertest/source
destRoot=/usertest/dest
copyFile(){
    local src=$srcRoot/$1
    local dest=$destRoot/$2
    local now1=$(date)
    echo "Current date time " "$now1"
    echo src: $src
    echo dest: $dest
    #For example: current datetime is 2023-08-14 09:20:33 AM
    #find files created date from 2023-08-14 08:00:00AM to 08:59:59AM
    #copy files from source to destination
    #print message copy filename from source to dest
    find "$src" -mtime $(date +%H)-1 ":59:59" -mtime $(date +%H)-1 ":00:00" -exec cp -p {} "$dest" \;
    echo "copy from " "$src" "file name" "to" "$dest" "file name"
}
copyFile subfolder/folderx foldery
) >> $logfile 2>&1

ベストアンサー1

findシステムにプリインストールされているGNUユーティリティを使用できます。

端末を開き、検索したいフォルダ(cd)に移動すると、次は過去1時間に作成されたそのディレクトリ内のすべてのファイルを検索します。

find . -type f -newerct '1 hour ago'

に置き換えると、過去1時間に変更されたすべてのファイルが表示されます-newerct-newermt

入力しながら、man find素晴らしいオプションがたくさん含まれている find の詳細をご覧ください。もう1つは、-not式を反転するために使用できるフラグです。

おすすめ記事