【发布时间】:2012-09-18 15:09:36
【问题描述】:
我正在尝试使用 find 命令对多个文件进行 tar。我想在文件名中找到包含特定字符串的目录中的所有文件,然后对这些文件进行 tar。我想在文件名中找到的字符串是日期。
例如,我有一个名为 ulog.20120914.log 的文件
我现在正在做的是:
DAYTWOPREV=`date +%Y%m%d --date='2 days ago'`
function archive {
cd $1;
if [ ! -d archive ]; then
mkdir archive;
fi
TMPFILE=`mktemp`;
find . -maxdepth 1 -name "${DAYTWOPREV}*" -type f -print0 > $TMPFILE;
TARFILE=archive/${DAYTWOPREV}$2.tar;
if [ ! -e $TARFILE ]; then
echo tar cfT $TARFILE /dev/null;
tar cfT $TARFILE /dev/null;
fi
cat $TMPFILE | xargs -0r tar rf $TARFILE
cat $TMPFILE | xargs -0r rm -rf
rm -f $TMPFILE;
}
【问题讨论】: