Answers:
就像:
find . -mtime -1 | xargs tar --no-recursion -czf myfile.tgz
在哪里,find . -mtime -1
将选择(递归)前一天修改的当前目录中的所有文件。您可以使用分数,例如:
find . -mtime -1.5 | xargs tar --no-recursion -czf myfile.tgz
-newermt
是多漂亮。
-type f
到仅选择文件。这将维护文件夹结构,但仅备份更改后的文件。
如果您有GNU find
,那么会有大量相关选项。唯一的障碍是它们的接口比恒星还小:
-mmin n
(修改时间以分钟为单位)-mtime n
(修改时间(天)-newer file
(修改时间比文件的修改时间新)-daystart
(将开始时间从当前时间调整为一天的开始)困难的部分是确定某个时间以来的分钟数。
值得考虑的一个选项:用于touch
创建具有所需修改时间戳记的文件;然后find
与一起使用-newer
。
touch -t 200901031231.43 /tmp/wotsit
find . -newer /tmp/wotsit -print
rm -f /tmp/wotsit
这会查找比2009-01-03T12:31:43更新的文件。显然,在脚本中,/tmp/wotsit
将是带有PID或其他值的名称,以使其唯一。并且有一个trap
确保即使用户中断它也会被删除的方法,依此类推。
-newermt '2009-01-03T12:31:43'
来避免创建仅用于参考的文件。
-newermt
(在文档中记录,-newerXY
因为有多个选项;在这种情况下,X = m,Y = t)。我使用的(几乎是过时的)Linux系统上的GNU查找不支持该选项,因此它是相对较新的版本。感谢您的注意。
-newermt '-2 weeks'
。
-newermt '2009-01-03T12:31:43'
看起来很棒,但可悲的是它似乎可以解释错误时区中的所有内容:lists.gnu.org/archive/html/bug-findutils/2012-12/msg00009.html
这将适用于一定数量的文件。您希望包括“ -print0”和“ xargs -0”,以防任何路径中有空格。本示例查找最近7天内修改的文件。要查找最近7天之前修改过的内容,请使用“ +7”。
find . -mtime -7 -print0 | xargs -0 tar -cjf /foo/archive.tar.bz2
如该页面警告所示,如果有很多参数,xargs可能导致tar命令多次执行,并且“ -c”标志可能会导致问题。在这种情况下,您需要这样做:
find . -mtime -7 -print0 | xargs -0 tar -rf /foo/archive.tar
您无法使用tar更新压缩的tar存档,因此必须在第二步中对其进行bzip2或gzip压缩。
-type f
到仅选择文件。这将维护文件夹结构,但仅备份最近更改/添加的文件。
该脚本将查找修改日期为给定日期前后两分钟的文件(您可以根据需要更改条件中的值)
PATH_SRC="/home/celvas/Documents/Imp_Task/"
PATH_DST="/home/celvas/Downloads/zeeshan/"
cd $PATH_SRC
TODAY=$(date -d "$(date +%F)" +%s)
TODAY_TIME=$(date -d "$(date +%T)" +%s)
for f in `ls`;
do
# echo "File -> $f"
MOD_DATE=$(stat -c %y "$f")
MOD_DATE=${MOD_DATE% *}
# echo MOD_DATE: $MOD_DATE
MOD_DATE1=$(date -d "$MOD_DATE" +%s)
# echo MOD_DATE: $MOD_DATE
DIFF_IN_DATE=$[ $MOD_DATE1 - $TODAY ]
DIFF_IN_DATE1=$[ $MOD_DATE1 - $TODAY_TIME ]
#echo DIFF: $DIFF_IN_DATE
#echo DIFF1: $DIFF_IN_DATE1
if [[ ($DIFF_IN_DATE -ge -120) && ($DIFF_IN_DATE1 -le 120) && (DIFF_IN_DATE1 -ge -120) ]]
then
echo File lies in Next Hour = $f
echo MOD_DATE: $MOD_DATE
#mv $PATH_SRC/$f $PATH_DST/$f
fi
done
例如,您只希望文件的修改日期早于给定日期,则可以更改120
为0
in $DIFF_IN_DATE
参数以放弃参数的条件$DIFF_IN_DATE1
。
同样,如果您希望文件的修改日期在给定日期的前后1小时,则只需将in 替换120
为。3600
if CONDITION