我试图弄清楚为什么以下 tar 命令不起作用 -
我已经尝试了以下 2 个版本,但都不起作用 -
版本 1
tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar -C '/home/jhonst/data_lake/1m/*.UX.csv'
我看到的错误是
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
版本 2
tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar -C '/home/jhonst/data_lake/1m/*.UX.csv' .
我看到的错误是
tar:
/home/jhonst/data_lake/1m/*.UX.csv: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
请有人指导我做错了什么
您的问题没有提供足够的详细信息来提供精确的答案(您的问题需要更具体、更详细,并包含对您要达到的目标的更多解释),但我想我明白了。
tar的
-C
参数表示“更改到此选项之后的目录”,但是您没有在选项之后给它一个目录名,而是试图给它一个文件列表。此外,您将通配符括在引号中,这意味着 shell 不会扩展它以匹配文件。(新手用户经常会感到困惑,尽管您使用 tar 命令制作存档,但参数列表的处理实际上是由 shell 而不是 tar 命令完成的)。
最简单的方法是先切换到工作目录,然后运行 tar 命令。
在 shell 命令提示符下输入它应该可以解决问题(注意缺少引号):
cd /home/jhonst/data_lake/1m && tar -c --use-compress-program=pigz -f UX.tar *.UX.csv
如果您希望在每个子目录中都有一个单独的存档(您的问题对此并不完全清楚),那么像这样的 bash 循环将起作用:
如果您想要 tar 存档中的目录名称,那么您可以
-f UX_${d}.tar
在 tar 命令中使用,而不是-f UX.tar