如何使用 unix shell 脚本压缩目录中具有特定模式的 csv 文件

如何使用 unix shell 脚本压缩目录中具有特定模式的 csv 文件

我在 Linux 目录中有一些文件。下面列出了部分文件

-rw-rw-r--. 1 roots roots 0 Dec 23 02:17 zzz_123_00000_A_1.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:18 zzz_121_00000_A_2.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:18 zzz_124_00000_A_3.csv
drwxrwxr-x. 2 roots roots 6 Dec 23 02:18 zzz
-rw-rw-r--. 1 roots roots 0 Dec 23 02:54 yyy_123_343434_A_1.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:55 yyy_123_343434_A_1.xml
-rw-rw-r--. 1 roots roots 0 Dec 23 02:55 yyy_1254_343434_A_1.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:55 yyy_1254_343434_A_1.txt
drwxrwxr-x. 2 roots roots 6 Dec 23 02:56 yyy

现在我必须根据起始文件名模式从上面的列表中压缩 .csv 文件。Zip 文件名应该是匹配的模式(在上面的 zzz_timestamp.zip 和 yyy_timestamp.zip 中

在我的目录中,其他文件格式也具有相同的名称。而且我的目录可能还有子目录。我不应该考虑 zip 过程中的其他文件和子目录。

一旦完成 zip,我必须将这些 csv 文件移动到存档目录中。我必须编写 unix 脚本。

预期输出:

zzz_timestamp.zip 应该有 zzz_123_00000_A_1.csv、zzz_121_00000_A_2.csv 和 zzz_124_00000_A_3.csv

yyy_timestamp.zip 应该有 yyy_123_343434_A_1.csv、yyy_1254_343434_A_1.csv

请告诉我如何完成这项任务。

答案1

您知道可以给 zip 指定文件名吗?

zip zzz_timestamp.zip zzz_???_000000_1_?.csv

zip yyy_timestamp.zip yyy_*.csv

您可以事先尝试使用

echo yyy_*.csv

看看 shell expand 是否满足您的需要。

相关内容