tar --files-from 抱怨“无法统计:没有这样的文件或目录”

tar --files-from 抱怨“无法统计:没有这样的文件或目录”

当我输入:

tar -cvf ~/changeset.tar --files-from ~/changeset.txt

它响应以下输出:

tar:  admin/memberinformation.php            : Cannot stat: No such file or directory
tar:  business/clsPreferredAgencies.php      : Cannot stat: No such file or directory
tar:  business/clsPreferredAgencies_test.php : Cannot stat: No such file or directory
tar:  business/clscustomer.php               : Cannot stat: No such file or directory
tar:  business/clsfeedback.php               : Cannot stat: No such file or directory
tar:  business/clsleads.php                  : Cannot stat: No such file or directory
tar:  business/connection.php                : Cannot stat: No such file or directory
tar:  crons/daily_activity.php               : Cannot stat: No such file or directory
tar:  crons/not_closed_orders2.php           : Cannot stat: No such file or directory
tar:  crons/unaccepted_orders2.php           : Cannot stat: No such file or directory
tar:  js/jquery-1.4.2.js                     : Cannot stat: No such file or directory
tar:  sql/alter-project.sql                  : Cannot stat: No such file or directory
tar:  sql/buyerName.php                      : Cannot stat: No such file or directory
tar:  sql/preferredAgencies.sql              : Cannot stat: No such file or directory
tar:  sql/underwriters_list.sql              : Cannot stat: No such file or directory
tar:  user/close_selectedporject.php         : Cannot stat: No such file or directory
tar:  user/feedback.php                      : Cannot stat: No such file or directory
tar:  user/forum.php                         : Cannot stat: No such file or directory
tar:  user/initiatelead.php                  : Cannot stat: No such file or directory
tar:  user/leadprocess_detail.php            : Cannot stat: No such file or directory
tar:  user/mem_direc.php                     : Cannot stat: No such file or directory
tar:  user/qws.php                           : Cannot stat: No such file or directory
tar:  user/view_leaddetails.php              : Cannot stat: No such file or directory
tar:  user/viewfeedbackforusers.php          : Cannot stat: No such file or directory
tar:  user/viewfeedbacks.php                 : Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
lsiden@lsiden2:~/titan$ ls admin/memberinformation.php 
admin/memberinformation.php

以下是 ~/changeset.txt 的内容换句话说,一堆相对路径。作为健全性检查:

$ ls admin/memberinformation.php 
admin/memberinformation.php

为什么 tar 找不到这些文件,尽管可以通过给定的相对路径从当前目录清楚地访问它们?

供参考:

$ tar --version
tar (GNU tar) 1.15.1

答案1

每行开头都有一个额外的空格changeset.txt

编辑: 另外,您是否changeset.txt在 Windows 机器上创建过?如果是这样,那么^M每行末尾可能会有一个额外的字符。大多数 unix 程序会将此字符视为行的一部分(这里是文件名的一部分),而 Windows 则将其视为^M换行符序列的一部分。您可以通过运行来查看是否是这种情况:通常每行末尾cat -A changeset.txt应该只有一个;如果您看到,则说明您有一个 Windows 文件。该命令通常可用于转换行尾。$^M$dos2unix

答案2

我的 Mac 上也遇到了同样的问题(Darwin 内核版本 10.8.0)

事实证明,我的 file.txt 中有两行在行尾有一个多余的空格。一旦我删除行尾的空格,它就可以正常工作了。我通过在行尾重新添加空格来确认这一点,但它失败了,并显示以下错误:

无法统计:没有这样的文件或目录

因此看起来,任何地方的额外空格或额外的空行都会导致失败。

此外,FWIW,我能够指定包含以下任一内容的文件:

./src/com/blarg/foo.java

或者

src/com/blarg/foo.java

所以无论哪种方式都可以。问题只是在于那个令人讨厌的空白。

答案3

在 ubuntu 10.04 上,tar --files-from-T选项

当最后一行包含空格时,tar 会失败。如果在末尾添加一个空行,tar 就会运行。

答案4

我通过运行来让它工作:

tar cvf ~/changeset.tar `cat ../changeset.txt`

相关内容