是否有命令可以仅复制某个日期(例如 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
部分。