linux,仅复制特定日期之前的文件

linux,仅复制特定日期之前的文件

是否有命令可以仅复制某个日期(例如 20120901)之前的文件?此外,我想使用 cp -p 功能来执行此操作(例如,保留原始时间戳)。

答案1

是的,您应该能够通过触摸和查找的组合来完成此操作。

# Create a file with the desired timestamp
touch -d 20120901 /tmp/timefile

# Find all files older than that and act on them
find $PATH -type -f -and -not -newer /tmp/timefile -print0 | xargs -0 -i % cp -p % /new/location

因此,此命令的作用是查找目录下所有$PATH在 2012 年 9 月 1 日 00:00:00 之前修改过的文件,并将它们全部复制到目录中/new/location

答案2

接受的答案中有一个拼写错误。-type后面应该跟着f而不是-f。另外,这种表达方式对我来说不起作用。

这对我确实有用:

find <path> -type f -and -not -newer /tmp/timefile | xargs -I  '{}' cp -p '{}' <path/to/destination/directory>

要查找比时间戳文件更新的文件,请执行以下操作:

find <path> -type f -and -newer /tmp/timefile | xargs -I  '{}' cp -p '{}' <path/to/destination/directory>

另外,如果要根据特定的小时,分​​钟和秒进行过滤,请修改touch部分内容如下

touch -t [[CC]YY]MMDDhhmm[.SS] /tmp/timefile

例如

touch -t 202205040930.00 /tmp/timefile

然后做该find部分。

相关内容