在 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
来自 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