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;
}