从文本文件中以ksh和compress读取文件名

我想编写一个KornShell(ksh)脚本来从文本文件(有前缀列表)中读取文件名,并通过循环在目录中找到它进行压缩。

例如:我会在文本文件中保留前缀'abcd'。

通过阅读它,我想压缩匹配名称的目录中的文件,例如abcd ###。YYYYMMDDXXXXXX.txt

我不想使用相同的前缀做任何事情,但使用不同的扩展名或不同的模式,例如abcd ###。YYYYMMDDXXXXXX.dat或abcd ###。YYYYMMDDXXXXXX.txt.Z。 我只想压缩像这样abcd ###。YYYYMMDDXXXXXX.txt的匹配。

如何在ksh中实现这个?


从表面上看,这应该做到:

: ${COMPRESS:=xz}
while read prefix
do
    $COMPRESS ${prefix}[0-9][0-9][0-9].[12][09][0-9][0-9][01][0-9][0-3][0-9]??????.txt
done < file

显然,我不得不做出一些猜测,即#表示一个数字, YYYYMMDD是一个日期,并且X是任何字符(在答案中是? )。 如果X的意思是任何大写字母或其他东西,则相应地进行调整。 年规则将接受19xx和20xx(也是10xx和29xx,但是你不可能有这样的文件;月规则接受00..19;日规则接受00..39。如果你必须验证更多,那么你不能轻易使用简单的globbing正则表达式。

我用xz作为压缩程序。 我不会使用compress程序进行压缩,因为它不能与gzip进行比较,更不用说bzip2xz等了。

链接地址: http://www.djcxy.com/p/17523.html

上一篇: read file name from text file in ksh and compress

下一篇: Strange behaviour of