在 linux 中解压具有长名称的文件时出现问题

Problems untarring files with long names in linux

来自 windows,通过使用 7z 生成的 tar 文件。我在处理一些长文件名时遇到问题:

tar: xxxxxxx: Cannot open: File name too long

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

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

但这不起作用。 sed 表达式虽然有效:

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

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

您在表达式中排除了文件扩展名。你能试试这个吗;

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

例如:

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