根据时间戳将文件从一个目录复制到另一个目录

根据时间戳将文件从一个目录复制到另一个目录

需要根据文件的时间戳将文件从一个目录获取到另一个目录。

/Directory1  - From directory
TEMP-dummy-20160812-1149.200476.xml
TEMP-dummy-20160812-1151.000000.xml
TEMP-dummy-20160812-1152.000000.xml

我需要复制时间戳大于的文件20160812-1150.000000

注:时间戳20160812-1150.000000将出现在一个静态文件中。

预期结果:

/Directory2
TEMP-dummy-20160812-1151.000000.xml
TEMP-dummy-20160812-1152.000000.xml

答案1

zsh

cd /dir1 &&
  mv TEMP-dummy-*(e:'[[ $REPLY > TEMP-dummy-20160812-1150.000000 ]]':) /dir2

POSIXly 并假设所有这些文件都遵循该模式:

cd /dir1 &&
  printf '%s\n' TEMP-dummy-* |
    awk '$0 > "TEMP-dummy-20160812-1150.000000"' |
    xargs sh -c '[ "$#" -eq 0 ] || exec mv "$@" /dir2' sh

答案2

cd /Path/to/Directory1
ref_timestamp=201608121150000000 # punctuation marks deliberately removed.
for file in *
do
  timestamp=$(echo ${file} | cut -c 12-31 | tr -cd [:digit:])
  if [ ${timestamp} -ge ${ref_timestamp} ]
  then
    cp ${file} /Path/to/Directory2
  fi
done

此代码片段假设您使用的是 GNU Coreutils,而不是传统 Unix 系统(例如 Sun Solaris、AIX 或 HP-UX)附带的tr库存。tr

相关内容