需要根据文件的时间戳将文件从一个目录获取到另一个目录。
/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