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
式を反転するために使用できるフラグです。