Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Unix tar返回的参数列表太长_Linux_Shell_Unix_Tar - Fatal编程技术网

Linux Unix tar返回的参数列表太长

Linux Unix tar返回的参数列表太长,linux,shell,unix,tar,Linux,Shell,Unix,Tar,当我尝试使用fowing命令对文件夹中的所有文件进行tar时: tar cvf mailpdfs.tar*.pdf 壳牌公司抱怨说: ksh:/usr/bin/tar:0403-027参数列表太长。 如何处理?我的文件夹包含25000个pdf文件,每个文件大小为2MB,如何快速复制它们?您可以将所有pdf文件复制/移动到新文件夹,然后对新文件夹进行tar mv *.pdf newfolder tar cvf mailpdfs.tar newfolder tar选项-T就是您所需要的 -

当我尝试使用fowing命令对文件夹中的所有文件进行tar时:

tar cvf mailpdfs.tar*.pdf

壳牌公司抱怨说:

ksh:/usr/bin/tar:0403-027参数列表太长。


如何处理?我的文件夹包含25000个pdf文件,每个文件大小为2MB,如何快速复制它们?

您可以将所有pdf文件复制/移动到新文件夹,然后对新文件夹进行tar

mv *.pdf newfolder

tar cvf mailpdfs.tar newfolder

tar选项
-T
就是您所需要的

   -T, --files-from=FILE
          get names to extract or create from FILE 
您正在突破ksh中文件全局绑定的限制,因此可以生成如下文件列表

ls | grep '\.pdf$' >files.txt
然后将该文件与tar一起使用

tar cvf mailpdfs.tar -T files.txt
最后,您可以通过让tar从stdin读取文件名(通过为
-T
选项提供特殊文件名
-
)来创建一个临时文件来保存文件名

所以我们就这样结束了

ls | grep '\.pdf$' | tar cvf mailpdfs.tar -T -

可能的重复等。这样,文件名中的特殊字符就不再是问题:
find-maxdepth 1-名称“*.pdf”-print0|tar--null-cf mailpdfs.tar-T-