Одним путем я предложил бы, путем разархивации, перемещения файла и затем пересжатия.
Как пример, скажем, у нас есть этот zip-файл:
Archive: foo.zip
Length Date Time Name
--------- ---------- ----- ----
0 2013-01-30 14:38 very/
0 2013-01-30 14:38 very/many/
0 2013-01-30 14:38 very/many/paths/
0 2013-01-30 14:38 very/many/paths/foo.txt
0 2013-01-30 14:38 file.txt
--------- -------
0 5 files
Для распаковки файла давайте создадим каталог в /tmp
сначала. Затем мы выполним следующие действия:
foo.zip
к нашему временному каталогуd=$(mktemp -t -d foo.zip.XXXXXX) && unzip -d $d foo.zip
$d
)mv ${d}/file.txt ${d}/very/many/paths/
cd
работать временно dir и Пересжатие все в новый zip-файл( cd $d && zip -r foo.zip ./* )
mv ${d}/foo.zip ./
rm -rf ${d}
Это происходит, когда Вы идете назад и вперед, монтируя файловую систему с новым-> старый-> новые ядра. Это неважно, но с Btrfs необходимо придерживаться недавних ядер так или иначе.