解决在Linux

时间:2016-10-06 07:29:17

标签: linux windows sed tar

来自windows,通过7z生成的tar文件。我遇到一些长文件名有问题:

tar: xxxxxxx: Cannot open: File name too long

Linux(或tar?)似乎对文件名有256个字符的限制。很公平。我试图使用--xform选项限制长度:

tar -x --xform 's/^\(.\{200\}\).*/\1/' -f japanese.tar

但这不起作用。 sed表达式正在运行:

$ echo whateverwhateverwhateverwhateverwhateverwhateverwhatever | sed -e 's/^\(.\{10\}\).*/\1/'
whateverwh

tar不支持sed表达式吗?还有其他缩短名字的方法吗?

1 个答案:

答案 0 :(得分:1)

您在表达式中排除了文件扩展名。你能尝试一下吗?

tar -x --xform 's/^\(.\{200\}\).*\(\.[^.]*\)/\1\2/' -f japanese.tar

例如:

user@host:/tmp/test$ echo whateverwhateverwhateverwhateverwhateverwhateverwhatever.txt | sed -e 's/^\(.\{10\}\).*/\1/'
whateverwh
user@host:/tmp/test$ echo whateverwhateverwhateverwhateverwhateverwhateverwhatever.txt | sed 's/^\(.\{10\}\).*\(\.[^.]*\)/\1\2/'
whateverwh.txt